我们正在将之前的项目移至Play Framework 2.4。 在之前的项目(Vaadin 7)中,我们使用Apache Shiro没有任何问题。 现在,在Play Framework中,我们遇到了Apache shiro的问题。 用户可以登录。但是然后不断刷新页面然后用户离开,这意味着使用以下调用时Subject为null:
Subject currentUser = SecurityUtils.getSubject();
但是如果在登录后,用户等待几秒钟,然后刷新页面,那么主题不是空的并且应该正常工作。 同样,如果用户不断刷新页面,则Subject再次返回null。
有没有人有这方面的经验?
这是shiro.ini:
jdbcRealm = security.MyCustomRealm
# Sha256
sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher
sha256Matcher.storedCredentialsHexEncoded = false
sha256Matcher.hashIterations = 1024
jdbcRealm.credentialsMatcher = $sha256Matcher
jdbcRealm.authenticationQuery = SELECT password, salt FROM b_user WHERE email = ?
# permissions
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.userRolesQuery = select role_name from b_user_role where email = ?
jdbcRealm.permissionsQuery = select permission from b_role_permission where role_name = ?
ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
ds.serverName = localhost
ds.user = root
ds.password = 123456
ds.databaseName = mydb
jdbcRealm.dataSource=$ds
# Use Built-in Chache Manager
builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $builtInCacheManager
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
# 1,800,000 milliseconds = 30 mins
securityManager.sessionManager.globalSessionTimeout = 1800000
securityManager.realms = $jdbcRealm