【发布时间】:2015-08-12 00:21:34
【问题描述】:
我正在使用 Spring 控制器 来展示我的 jsp 视图和 Spring 安全性。
在安全上下文中,所有用户都可以访问 /login (login.jsp),但只有经过身份验证的用户才能访问 /home (home.jsp)。
当我从浏览器 cookie 中删除会话 ID 时,应用程序中的下一个请求应该重定向到登录页面。
我在控制器中显示登录页面的方法是:
@RequestMapping(value = {"/login","/login.do"})
public ModelAndView showLoginForm() {
String username = getUsername();
if(!username.equals("anonymousUser")){
return new ModelAndView("redirect:/home");
}
return new ModelAndView("login");
}
我的网址在 /home 但是当我尝试使用此功能重定向登录时 return new ModelAndView("login") 浏览器保持相同的网址。
我的 spring 安全配置
<http entry-point-ref="loginEntryPoint"
use-expressions="true" create-session="always">
<session-management
session-authentication-strategy-ref="sas" />
<intercept-url pattern="/" access="permitAll" />
<intercept-url pattern="/login.do" access="permitAll" />
<intercept-url pattern="/login" access="permitAll" />
<intercept-url pattern="/accessDenied.do" access="permitAll" />
<intercept-url pattern="/app/**" access="permitAll" />
<intercept-url pattern="/signup/createuser" access="permitAll" />
<intercept-url pattern="/changepassword/changefirstpassword" access="permitAll" />
<intercept-url pattern="/recoverpassword/recoverPasswordRequest" access="permitAll" />
<intercept-url pattern="/resources/**" access="permitAll"/>
<intercept-url pattern="/**" access="authenticated" />
<access-denied-handler error-page="/accessDenied.do" />
<custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
<custom-filter position="FORM_LOGIN_FILTER" ref="domainFormLoginFilter" />
<logout success-handler-ref="myLogoutSuccessHandler" />
</http>
为什么我的浏览器没有重定向到登录页面? tks
【问题讨论】:
-
你为什么要自己动手? Spring Security 已经为您做到了……而且您不只是重定向转发……
-
我没有控制器来返回我的视图?
标签: spring jsp spring-security