在Spring安全性中重定向url

时间:2014-09-08 07:23:37

标签: java spring spring-security

早上好,

我一直在寻找我的Spring安全配置,我想知道如何将所有指向例如/ foo / *的路径重定向到特定网址。 我需要做一些与没有会话时类似的事情,我们会重定向到登录页面。

就我而言,我需要指向/ foo / *的任何网址都会重定向到in_development_page.html。

我想使用拦截模式,如果可能的话,就像这样。

   <intercept-url pattern="/foo/*" redirect="in_development_page.html"/>

你知道这样的事情是否可能吗?。

问候。

1 个答案:

答案 0 :(得分:4)

您可以使用拦截器:

<mvc:interceptor>
    <mvc:mapping path="/foo/**"/>            
    <bean class="com.interceptors.AuthorizationInterceptor" />
</mvc:interceptor>

假设我们要检查会话,那么您可以在AuthorizationInterceptor中编写代码,如:

    if(UserSession.isSessionValid()){
        System.out.println("ready to enter");
        return true;
    }else{
        System.out.println("not logged in...redirecting to login");
        response.sendRedirect("/in_development_page");
        return false;
    }

这里UserSession是我的类,它有会话变量。

如果您只想重定向,则可以删除if&amp;的代码。只通过response.sendRedirect()。 in参数传递正在开发的页面URL

全班代码:

public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
    @Autowired
    private IUserSession UserSession;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("interceptor called for " + request.getRequestURI());
        if(UserSession.isSessionValid()){
            System.out.println("ready to enter");
            return true;
        }else{
            System.out.println("not logged in...redirecting to login");
            response.sendRedirect("/in_development_page");
            return false;
        }
    }
}

这里的课将扩展HandlerInterceptorAdapter春课。