[英]Spring Boot 2 Interceptor resolves `/login' on every request
在Spring Boot安全性内部,如果我检测到用户已登录,则尝试将服务器端在Spring Boot中的登录页面自动重定向到概述页面。仅在用户注销时才显示登录屏幕。
@Configuration
public class MvcConfig implements WebMvcConfigurer
{
@Override
public void addInterceptors( InterceptorRegistry registry )
{
registry.addInterceptor( new LoginInterceptor() ).addPathPatterns( "/login" );
}
在LoginInterceptor内部,我有:
@Override
public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception
{
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String url = request.getRequestURL().toString();
System.out.println(url);
if( auth.isAuthenticated() )
{
response.sendRedirect( "/my/overview" );
return false;
}
return true;
}
但是,即使我已登录,调试器似乎也认为我仍在/ login路由上。 spring boot是否通过/login
路由每个请求以检查身份验证? 我如何实现除非用户注销否则不解决登录页面的目标?
实际上,这里发生的是为isAuthenticated返回了“ anonymousUser”,因此authenticated方法无法正常工作。 对于未经授权的帐户的重定向使我觉得一切都在通过登录路径进行,而实际上这只是安全性在起作用。 检查原理是否为null是替代方法。
if( auth.isAuthenticated() && principal != null )
{
response.sendRedirect( OVERVIEW_PAGE );
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.