MongoDB Adapter is the Mongo DB adapter for Casbin. With this library, Casbin can load policy from MongoDB or save policy to it.
go get -u github.com/casbin/mongodb-adapter/v4
package main import ( "github.com/casbin/casbin/v2" "github.com/casbin/mongodb-adapter/v4" ) func main() { // Initialize a MongoDB adapter and use it in a Casbin enforcer: // The adapter will use the database named "casbin". // If it doesn't exist, the adapter will create it automatically. a,err := mongodbadapter.NewAdapter("127.0.0.1:27017") // Your MongoDB URL. if err != nil { panic(err) } // Or you can use an existing DB "abc" like this: // The adapter will use the table named "casbin_rule". // If it doesn't exist, the adapter will create it automatically. // a := mongodbadapter.NewAdapter("127.0.0.1:27017/abc") e, err := casbin.NewEnforcer("examples/rbac_model.conf", a) if err != nil { panic(err) } // Load the policy from DB. e.LoadPolicy() // Check the permission. e.Enforce("alice", "data1", "read") // Modify the policy. // e.AddPolicy(...) // e.RemovePolicy(...) // Save the policy back to DB. e.SavePolicy() }
package main import ( "github.com/casbin/casbin/v2" "github.com/casbin/mongodb-adapter/v4" mongooptions "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // Initialize a MongoDB adapter with NewAdapterWithClientOption: // The adapter will use custom mongo client options. // custom database name. // default collection name 'casbin_rule'. mongoClientOption := mongooptions.Client().ApplyURI("mongodb://127.0.0.1:27017") databaseName := "casbin" a,err := mongodbadapter.NewAdapterWithClientOption(mongoClientOption, databaseName) // Or you can use NewAdapterWithCollectionName for custom collection name. if err != nil { panic(err) } e, err := casbin.NewEnforcer("examples/rbac_model.conf", a) if err != nil { panic(err) } // Load the policy from DB. e.LoadPolicy() // Check the permission. e.Enforce("alice", "data1", "read") // Modify the policy. // e.AddPolicy(...) // e.RemovePolicy(...) // Save the policy back to DB. e.SavePolicy() }
import "github.com/globalsign/mgo/bson" // This adapter also implements the FilteredAdapter interface. This allows for // efficent, scalable enforcement of very large policies: filter := &bson.M{"v0": "alice"} e.LoadFilteredPolicy(filter) // The loaded policy is now a subset of the policy in storage, containing only // the policy lines that match the provided filter. This filter should be a // valid MongoDB selector using BSON. A filtered policy cannot be saved.
This project is under Apache 2.0 License. See the LICENSE file for the full license text.