1我遇到问题。我在我的项目用户,管理员,专家中担任3个角色。 2 3不同的用户登录页面。 3我想要的是当会话过期时,以及之后,如果用户做了任何事件,页面应根据那里的角色指示。 例如,用户应该重定向到用户登录和管理员来管理登录。在会话过期后重定向到登录页面
我已经阅读了很多关于它的文档。有一些给出了添加过滤器和检查过滤器中的会话的想法。 但是这个问题是我没有得到过滤器的作用。' 所以SpringSecurityHolder将在Filter中工作。
我也读过有关采用事件的ApplicationListerner。 我有返回代码,但我不知道如何从listerner类
import java.util.List;
import org.springframework.context.ApplicationListener;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.session.HttpSessionDestroyedEvent;
public class SessionTimeoutHandler implements ApplicationListener<HttpSessionDestroyedEvent>{
@Override
public void onApplicationEvent(HttpSessionDestroyedEvent event) {
List<SecurityContext> lstSecurityContext = event
.getSecurityContexts();
for (SecurityContext securityContext : lstSecurityContext)
{
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
List<GrantedAuthority> authList = (List<GrantedAuthority>) authentication
.getAuthorities();
String userRole = authList.get(0).getAuthority();
if(userRole.equals("ROLE_ADMIN")){
}else if(userRole.equals("ROLE_EXPERT")){
}else{
}
}
}
}
请帮我我如何将能够重定向页面内直接。
感谢您的帮助
所以我删除了我的答案,并且据我所知和理解,它不会,因为你在你身边的代码正在获取身份验证,这是不存在的,因为用户已经注销。请阅读一些基础知识,它们会有所帮助。 – 2015-03-31 12:24:29
但你认为必须有一些功能,我们可以从中决定在哪里重定向页面 – 2015-03-31 12:34:56