ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-拦截器preHandle()不会重定向到login.html

2019-10-09 08:10:41  阅读:201  来源: 互联网

标签:url-redirection java spring spring-security jsp


我有一个春季申请表.我引入了sessionInterceptor来防止直接访问index.jsp.如果用户未登录,则该用户将无法访问index.jsp,并应重定向到login.html.代码正在命中preHandle()方法并运行所有代码,但是在返回false之后,它不会重定向到login.html.怎么了?有上师帮忙吗?提前致谢.

我在SessionInterceptor.java中的preHandle()是:

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        HttpSession session = request.getSession();

        // if displaying the home page, make sure the user is reloaded.
        if (request.getRequestURI().endsWith("login.html")) {
            session.removeAttribute("isUserLoggedIn");
        }

        if (session.getAttribute("isUserLoggedIn") == null && !request.getRequestURI().endsWith("login")) {
            response.sendRedirect(request.getContextPath() + "/login.html");
            return false;               
        }
        return true;
    }

我也尝试了以下方法,但是徒劳无功.

RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher("/login.html");
                dispatcher.forward(request, response);

我的dispatcher-servlet.xml设置是:

<bean id="sessionInterceptor" class="com.xxx.xxx.xxx.SessionInterceptor" />
<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="sessionInterceptor" />
        </list>
    </property>
</bean>

<!-- Configures Handler Interceptors -->
<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <bean class="com.xxx.xxx.xxx.SessionInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

web.xml是:

  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>login.html</welcome-file>
  </welcome-file-list>

解决方法:

您可以尝试重定向到将从控制器捕获的逻辑路径
尝试

response.sendRedirect("/NotLogged");

然后创建一个像这样的函数:

@RequestMapping(value = {"/NotLogged"}, method = RequestMethod.GET)
public String notLogged() {
    return "login.html";
}

希望它对您有用!

标签:url-redirection,java,spring,spring-security,jsp
来源: https://codeday.me/bug/20191009/1878011.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有