Apache Shiro在Play Framework环境中表现得很奇怪?

时间:2015-08-04 02:47:31

标签: playframework shiro

我们正在将之前的项目移至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

0 个答案:

没有答案