Apache Shiro插件与grails中的多租户插件集成

时间:2014-12-15 05:10:20

标签: java maven grails shiro multi-tenant

我有一个特例,我必须使用编译'多租户 - 单-db-0.8.3'编译“:shiro:1.2.1”对于下面的案例: -

将组域作为租户,以便用户(用于身份验证的Shiro用户)在其组/租户中必须是唯一的。即,用户可能在其租户之外复制。因此,用户说A组中的test@gmail.com也可能在另一个B组中,因此可能在C中等等。

以下是我拥有的用户和群组域名: -

@MultiTenant
class User {
     String username
     String password
     Group group
 }

class Group implements Tenant {
    String name

    static belongsTo = [parent: Group]
    static hasMany = [users: User]
}

class RestRealm {

    def restService

    static authTokenClass = ru.grails.security.RestToken

    def authenticate(authToken) {
        log.info "Attempting to authenticate ${authToken.token} in REST realm..."
        def token = authToken.token

        // If we don't have user for specified token then user is not authenticated
        def username = restService.getUsernameForToken(token)
        **def user = User.findByEmail(username)**


        if (!user) {
            throw new UnknownAccountException("No account found for token [${token}]")
        }
        if (user?.status == PartyStatus.INACTIVE) {
            throw new InactiveUserException();
        }
        log.info "Found user '${user.email}' in DB"
        return new SimpleAccount(user.email, user.password, "RestRealm")
    }

}

多租户插件在域内不起作用(请参阅**中的代码。此用户必须仅从当前租户获取,该租户已使用实现TenantResolver的DomainTenantResolver设置)以及我创建的用于处理Shiro的restservice登录。我发现一个明显的解决方案是覆盖Shiro插件的功能来处理多租户。

是否有很多搜索是否有其他插件或Jar over maven来解决这个案例,但是徒劳无功。 但我很疑惑是否有其他人已经实施过这个问题的解决方案。

非常感谢任何帮助。

0 个答案:

没有答案