Grails多租户&;Spring安全核心插件
我正在使用Grails多租户插件和单租户模式。我使用了spring安全核心插件进行身份验证。我用过域名解析程序。用户表在默认数据库中不常见。每个租户数据库都有自己的用户表。除了以下两个问题外,它工作正常Grails多租户&;Spring安全核心插件,grails,multi-tenant,Grails,Multi Tenant,我正在使用Grails多租户插件和单租户模式。我使用了spring安全核心插件进行身份验证。我用过域名解析程序。用户表在默认数据库中不常见。每个租户数据库都有自己的用户表。除了以下两个问题外,它工作正常 当客户端(租户)用户尝试登录时,有时会点击默认数据库并说“找不到用户”。如果我在刷新页面后尝试(输入url并按CTRL+F5),它将正确登录 我在租户中有一个具有不同访问权限的普通用户。首先,我使用一个租户URL在浏览器中打开我的应用程序,使用凭据登录并成功登录。接下来,我在同一浏览器中打开另一
如何解决此问题?您必须确保在Spring安全筛选器之前注册了多租户servlet筛选器。我不知道如何在不重新编译插件的情况下做到这一点 当请求到达我的登录页面时,我会获取租户ID并将其保留在会话中
Integer tenantId = tenantResolver?.getTenantFromRequest(request)
if (session.tenantId == null) {
session.tenantId = tenantId
}
为了获取登录的用户详细信息,我通过实现GrailsUserDetailsService并在事务中调用来重写'loadUserByUsername'方法
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
def requst = SecurityRequestHolder.request
def httpSession = requst.getSession(false)
Integer tenant = httpSession.tenantId
TenantUtils.doWithTenant (tenant) {
User.withTransaction { status ->
User user = User.findByUsername(username)
}
}
}
现在我的问题解决了。你好,拉梅什,你能帮我打个邮件id吗?我也面临类似的问题