Grails的,有插件都Spring Security和Shiro
使用Spring Security可以在運行時創建角色,並在運行時將用戶添加到角色。
有一個名爲spring-security-ui的插件爲您提供了一個GUI,但我認爲它不適合您的用例,因爲您可能不希望John授予他人訪問其他業務的權限。 Spring-security-ui更像是一個超級管理員GUI。但應該很容易創建自己的用戶界面來授予訪問權限。
您需要決定是否需要三個角色; ROLE_ADMIN,ROLE_READ和ROLE_WRITE,並添加額外的檢查(例如過濾器)來檢查用戶是否嘗試訪問自己的業務。或者,如果你要動態地添加三個角色對於每個業務,即ROLE_BUSINESS1_ADMIN,ROLE_BUSINESS2_ADMIN等
動態地添加一個角色:
String roleName = ...
def role = Role.findByAuthority(roleName) ?: new Role(authority: roleName).save()
要添加一個角色給用戶:
PersonRole.create user, role, true
(在上例中,域對象稱爲人員和角色,但您可以使用任何其他名稱)
要動態地將訪問規則添加到URL,您需要使用Requestmap Instances Stored in the Database,或者您可以用編程方式檢查訪問SpringSecurityUtils.ifAnyGranted(roles)
我沒有Shiro的經驗,但我想它可以做同樣的事情。