gpt4 book ai didi

java - 错误页面重定向后,Spring Security身份验证为空

转载 作者:行者123 更新时间:2023-12-03 08:49:26 26 4
gpt4 key购买 nike

一些背景

当我尝试用用户信息和角色访问来构建导航栏时,在从处理程序拦截器上的Authentication(Spring Security)的404错误页面上检索这些信息时,我遇到了一些问题。

@Component
public class AuthenticationHandlerInterceptor implements HandlerInterceptor {

@Autowired
private IAuthenticationFacade authenticationFacade;

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
if (modelAndView != null) {
Authentication authentication = authenticationFacade.getAuthentication(); // <- Unexpected Null
if (authentication != null && !(authentication instanceof AnonymousAuthenticationToken)) {
modelAndView.getModel().put("user",
new UserModel(
authentication.getName(),
AuthorityUtils.authorityListToSet(authentication.getAuthorities())
)
); //put

} //fi

}//fi

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}

}

IAuthenticationFacade已按照 baeldung的建议实现。

问题

在我与某些用户进行身份验证之后,所有页面请求都将通过postHandle传递,并且有可能获取当前用户数据。除非页面由于某些404而被重定向。

下一行返回null。
Authentication authentication = authenticationFacade.getAuthentication();

错误重定向

@Configuration
public class ServerPropertiesConfig extends ServerProperties {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
super.customize(container);
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/errors/404/"));
}
}

当我访问诸如localhost/non-existing-page/之类的页面时,它将被重定向到localhost/errors/404/并在以下 Controller 处进行处理:

@Controller
@RequestMapping(value = "/errors")
public class ErrorController {

@RequestMapping(value = "/{error}/")
public String errorRedirect(@PathVariable String error) {
return "errors/error" + error;
}
}

最佳答案

如果您想获得经过认证的客户,请尝试使用@AuthenticationPrincipal注释。

关于java - 错误页面重定向后,Spring Security身份验证为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45058584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com