ste*_*eve 27 spring spring-security
我是Spring的新手:
我不希望经过身份验证的用户访问登录页面.如果用户已经过身份验证,那么处理'/ login'重定向的正确方法是什么?说,如果已经登录,我想重定向到'/ index'.
我在登录时尝试了'isAnonomous()',但它重定向到访问被拒绝的页面.
<security:http auto-config="true" use-expressions="true" ...>
<form-login login-processing-url="/resources/j_spring_security_check"
default-target-url="/index"
login-page="/login" authentication-failure-url="/login?login_error=t" />
<logout logout-url="/resources/j_spring_security_logout" />
...
<security:intercept-url pattern="/login" access="permitAll" />
<security:intercept-url pattern="/**" access="isAuthenticated()" />
</security:http>
Run Code Online (Sandbox Code Playgroud)
Rah*_*hul 49
在您的登录页面的控制器功能中:
检查用户是否已登录.
然后在那种情况下将他转发到索引页面.
相关代码:
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (!(auth instanceof AnonymousAuthenticationToken)) {
/* The user is logged in :) */
return new ModelAndView("forward:/index");
}
Run Code Online (Sandbox Code Playgroud)
要成功从登录页面重定向,如果用户已登录,请将以下内容添加到login.jsp:
将安全标记库标题添加到jsp的顶部:
<%@taglib uri="http://www.springframework.org/security/tags" prefix="sec"%>
Run Code Online (Sandbox Code Playgroud)
然后在"head"标签内添加以下标签(最好在顶部附近):
<sec:authorize access="isAuthenticated()">
<% response.sendRedirect("main"); %>
</sec:authorize>
Run Code Online (Sandbox Code Playgroud)
如果访问登录页面的用户已经登录,这将重定向到main.html(或者您的主要.jsp映射到的任何内容).
通过控制器执行此操作对我不起作用,因为有效的登录页面练习是让spring security的"form-login"bean执行所有重定向工作,因此没有登录控制器供我修改.
| 归档时间: |
|
| 查看次数: |
24077 次 |
| 最近记录: |