Spring Security 如何在grails中实现并发会话过滤器来处理多个登录会话?

ux6nzvsh  于 2023-01-17  发布在  Spring
关注(0)|答案(1)|浏览(132)

例如:假设用户"www.example.com"从一个浏览器登录并执行一些工作。同时,其他人以同一用户"testuser@xyz.com"从另一个浏览器/机器登录。在这种情况下,我想实现以下方法testuser@xyz.com" is login from one browser and performing some works. at the same time someone else login with same user "testuser@xyz.com" from another browser/machine in that scenario, i want to implement following ways
1.如果第一登录用户在最近3 - 4分钟内没有执行任何动作(非活动状态),则第一用户将注销,而第二用户将成功登录。
1.如果第一个登录的用户正在执行某个任务(活动条件),则第一个用户应收到通知,有人试图从另一个浏览器/机器登录,您是否同意允许?如果第一个用户允许,则只有第二个用户能够登录(第一个用户应注销),否则不允许。
任何帮助都将不胜感激。

ymzxtsji

ymzxtsji1#

这不是问题的确切解决方案,但肯定会给您提供线索。在您的/grails-app/conf/spring/resources. groovy中

//To enforce/restrict one session per user Starts
sessionRegistry(SessionRegistryImpl)
concurrentSessionFilter(ConcurrentSessionFilter, sessionRegistry)
registerSessionAuthenticationStrategy(RegisterSessionAuthenticationStrategy, ref('sessionRegistry')) {}
concurrentSessionControlAuthenticationStrategy(ConcurrentSessionControlAuthenticationStrategy, ref('sessionRegistry')) {
    exceptionIfMaximumExceeded = true //False
    maximumSessions = 1
}
sessionFixationProtectionStrategy(SessionFixationProtectionStrategy) {
    migrateSessionAttributes = false//true
    alwaysCreateSession = true//false
}
sessionAuthenticationStrategy(CompositeSessionAuthenticationStrategy, [concurrentSessionControlAuthenticationStrategy, sessionFixationProtectionStrategy, registerSessionAuthenticationStrategy])
//To enforce/restrict one session per user Ends

来源:searchcode.com

相关问题