在tomcat会话管理器中,有一些没有名称的空会话(猜测的用户名),我想以比正常会话小的超时时间删除该会话,我该如何在SessionListener类中做到这一点?
答案 0 :(得分:0)
据我所知。
org.apache.catalina.manager.util.SessionUtils#guessUserFromSession
将实现org.apache.catalina.Session
的对象(例如org.apache.catalina.session.StandardSession
)作为参数。
org.apache.catalina.Session#guessUserFromSession
通话
org.apache.catalina.Session#getPrincipal
在此对象上,该对象将返回实现java.security.Principal
的对象。
此接口具有java.security.Principal#getName
java.security.Principal#toString
,用于“猜测”绑定到会话的用户名的方法。
如果未返回java.security.Principal
的实现,
( null )org.apache.catalina.Session
调用
org.apache.catalina.Session#getAttribute
使用以下语法 Login , User , userName , UserName ,
Utilisateur ,然后以小写形式,然后以大写形式获得值。
如果这些属性是null
,则org.apache.catalina.Session
遍历
org.apache.catalina.Session#getAttributeNames
查找实现java.security.Principal
或继承自javax.security.auth.Subject
的对象
#getName
调用这些对象的增益方法#toString
和BWDisplay::setTemplate($template);
来“猜测”与此会话绑定的用户名。
您可以执行相同的过程来配置会话超时。