早上好,
我一直在查看我的 Spring 安全配置,我想知道如何将所有指向/foo/* 的路径重定向到特定的 url。 我需要做一些与没有 session 时类似的事情,然后我们重定向到登录页面。
就我而言,我需要将指向/foo/* 的任何 url 重定向到 in_development_page.html。
如果可能的话,我想使用拦截模式,就像这样。
<intercept-url pattern="/foo/*" redirect="in_development_page.html"/>
你知道这样的事情是否可能吗?
问候。
最佳答案
您可以使用拦截器:
<mvc:interceptor>
<mvc:mapping path="/foo/**"/>
<bean class="com.interceptors.AuthorizationInterceptor" />
</mvc:interceptor>
假设我们要检查 session ,那么您可以在 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
是我的具有 session 变量的类。
如果你只想重定向,那么你可以删除if
代码,只传递response.sendRedirect()
。
在参数中传递正在开发的页面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
spring 类。
关于java - Spring安全中的重定向url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25719208/