【问题标题】:Spring redirect view is not working弹簧重定向视图不起作用
【发布时间】: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


【解决方案1】:

首先删除您的控制器并将以下内容添加到您的安全配置中。

<sec:intercept-url pattern="/home" access="isAuthenticated()" />
<sec:intercept-url pattern="/login" access="permitAll()" />

使用框架而不是反对或围绕它...

【讨论】:

  • 我没有控制器来返回我的视图?
  • 我读了很多例子,它们都有控制器来返回视图
  • 如果我没有控制器来返回我的视图,当您输入 /login 时找不到请求。我有弹簧安全书,所有视图都有一个控制器来返回视图名称
  • 相信我,你不会......如果你有 Spring Security,它也超过了自己进行安全检查的目的,不是......将你的配置添加到你的问题中,我'会更新我的答案。
  • 你能给我看一个控制器映射视图的例子吗?
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 2019-12-14
  • 2017-05-03
  • 2011-01-02
  • 2011-06-22
  • 2013-05-05
  • 2014-02-15
相关资源
最近更新 更多