Java ApacheShiro插件与grails中的多租户插件集成
我有一个特殊情况,我必须使用编译'multi-tenant-single-db-0.8.3'和编译:shiro:1.2.1“来处理以下情况:- 将组域作为租户,以便用户(用于身份验证的Shiro用户)在其组/租户中必须是唯一的。i、 用户可能在其租户之外重复。因此,用户说test@gmail.com在A组中,也可能存在于另一个B组中,因此也可能存在于C组中,依此类推 以下是我拥有的用户域和组域:-Java ApacheShiro插件与grails中的多租户插件集成,java,maven,grails,shiro,multi-tenant,Java,Maven,Grails,Shiro,Multi Tenant,我有一个特殊情况,我必须使用编译'multi-tenant-single-db-0.8.3'和编译:shiro:1.2.1“来处理以下情况:- 将组域作为租户,以便用户(用于身份验证的Shiro用户)在其组/租户中必须是唯一的。i、 用户可能在其租户之外重复。因此,用户说test@gmail.com在A组中,也可能存在于另一个B组中,因此也可能存在于C组中,依此类推 以下是我拥有的用户域和组域:- @MultiTenant class User { String username
@MultiTenant
class User {
String username
String password
Group group
}
Multitenancy插件在域内不起作用(请参阅**s中的代码。此用户必须仅从当前租户(已使用实现TenantResolver的DomainTenantResolver设置)和我创建的用于处理Shiro登录的restservice获取。我发现的一个明显的解决方案是覆盖Shiro插件的功能来处理多租户 在maven上做了很多搜索,看看是否有其他插件或Jar来解决这个问题,但都是徒劳的。 但我感到困惑的是,这个问题是否有其他人实施的解决方案
任何帮助都将不胜感激。出于好奇,您是否尝试过将Shiro插件与一起使用?Stormpath具有Shiro集成,并在其数据模型中以本机方式支持多租户。已经使用Shiro和多租户单db插件,无法负担Stormpath的费用。我们还有其他选择吗?
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")
}
}