在Spring Security中,如果要注册登录页面

时间:2016-08-31 07:53:29

标签: spring-mvc spring-security

我正在使用spring MVC和spring security 4.0.2.RELEASE。我可以协助一个角色,并为用户提供权限,之后用户可以使用此代码访问页面;

http.authorizeRequests().antMatchers("/dba/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_DBA')")

在我的网站中,注册用户不应访问登录页面,只有匿名用户才能访问。如果注册用户尝试访问登录页面,则应将其重定向到索引页面或其他区域。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

你可以通过多种方式实现这一目标。

您的登录页面uri可能是由控制器方法处理的。最简单的方法是检查用户是否在控制器方法中进行了身份验证,如果是,则只进行重定向:

    @RequestMapping("/login")
    public String getLoginPage(){
        SecurityContext securityContext = SecurityContextHolder.getContext();
        Authentication auth = securityContext.getAuthentication();
        if(auth != null && auth.isAuthenticated()){
            return "redirect:/index";
        }
        else return "loginTemplate";
    }

您还可以构建一个拦截器,在到达控制器之前捕获请求,并在用户已经登录时进行重定向。