java Spring安全访问会话创建和会话销毁事件中的用户详细信息
我正在一个web应用程序上使用SpringMVC4和SpringSecurity3.1。我有一个要求,当用户登录和注销时,我需要更新用户的详细信息。我在这里搜索了很多,找到了解释Spring的HttpSessionListener和HttpSessionPublisheEvent用法的答案。我也了解SecurityContextHolder。getContext()。getAuthentication(),然后获取主体对象;在这些听众中不起作用。但有人解释说要把它搞定
session.getAttribute("SPRING_SECURITY_CONTEXT")
但是我无法访问
session.getAttribute("SPRING_SECURITY_CONTEXT")
当用户登录时,我可以获取身份验证和主体对象。在上述两种实现中,每当调用sessionCreated/sessionDestroyed事件时,我都会将该属性设置为null
我的登录页面是使用操作呈现的
http://localhost:8081/myapp/auth/showLogin
然后我使用表单登录
I am using custom UserDetails object as follows :.
public class SecurityContext {
public static ChatterUserDetails getCurrentUser(){
Object principal = SecurityContextHolder.getContext().getAuthentication().
getPrincipal();
if(principal instanceof MyUserDetails){
return (MyUserDetails) principal;
}
MyUserDetails anonymousJkWebUserDetails = new MyUserDetails("anonymous","anonymous",
new ArrayList<GrantedAuthority>());
anonymousJkWebUserDetails.setAnonymous(true);
return anonymousJkWebUserDetails;
}
}
还有安全。xml如下(仅适用于相关章节):
<http use-expressions="true">
<intercept-url pattern="/auth/showLogin" access="permitAll()"></intercept-url>
....
</http>
<form-login login-page="/auth/showLogin" always-use-default-target="true"
default-target-url="/auth/home" authentication-failure-url="/auth/showLogin?error=1"
login-processing-url="/auth/login" password-parameter="userPassword"
username-parameter="userId" />
<logout logout-success-url="http://${email.link.host}" logout-url="/auth/logout" delete-cookies="JSESSIONID" invalidate-session="true"></logout>
共 (0) 个答案