Hi there, casbin (https://github.com/casbin/casbin) <https://github.com/casbin/casbin> is a powerful and efficient open-source access control library for Golang projects. It provides support for enforcing authorization based on various models. By far, the access control models supported by casbin are:
1. ACL (Access Control List) <https://en.wikipedia.org/wiki/Access_control_list> 2. ACL with superuser <https://en.wikipedia.org/wiki/Superuser> 3. ACL without users: especially useful for systems that don't have authentication or user log-ins. 4. ACL without resources: some scenarios may target for a type of resources instead of an individual resource by using permissions like write-article, read-log. It doesn't control the access to a specific article or log. 5. RBAC (Role-Based Access Control) <https://en.wikipedia.org/wiki/Role-based_access_control> 6. RBAC with resource roles: both users and resources can have roles (or groups) at the same time. 7. ABAC (Attribute-Based Access Control) <https://en.wikipedia.org/wiki/Attribute-Based_Access_Control> 8. RESTful <https://en.wikipedia.org/wiki/Representational_state_transfer> Features What casbin does: 1. enforce the policy in the classic {subject, object, action} form or a customized form as you defined. 2. handle the storage of the access control model and its policy. 3. manage the role-user mappings and role-role mappings (aka role hierarchy in RBAC). 4. support built-in superuser like root or administrator. A superuser can do anything without explict permissions. 5. multiple built-in operators to support the rule matching. For example, keyMatch can map a resource key /foo/bar to the pattern /foo*. What casbin does NOT do: 1. authentication (aka verify username and password when a user logs in) 2. manage the list of users or roles. I believe it's more convenient for the project itself to manage these entities. Users usually have their passwords, and casbin is not designed as a password container. However, casbin stores the user-role mapping for the RBAC scenario. <https://github.com/casbin/casbin#installation>Installation go get github.com/casbin/casbin Please advise, raise your issues and star, thanks! -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.