我想能够处理401和显示一个特定的Angular 8页,但目前只显示index.html文件
注意事项
angular是SpringBoot的视图,因此它不是一个单独的应用程序
我没有使用spring security。我只是在spring中使用过滤器来确定是否需要授权
这是我的过滤器。
@Component
public class CustomSessionFilter extends OncePerRequestFilter {
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) httpServletRequest;
if (!req.getRequestURI().startsWith("/sample/path")){
HttpServletResponse httpResponse = (HttpServletResponse) httpServletResponse;
httpResponse.setContentType("application/json");
httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
return;
}
}
也许我有一个控制器可以扩展errorcontroller
@CrossOrigin
@RestController
public class IndexController implements ErrorController {
private static final String PATH = "/error";
@RequestMapping(value = PATH)
public ModelAndView saveLeadQuery() {
return new ModelAndView("forward:/");
}
@Override
public String getErrorPath() {
return PATH;
}
}
编辑:我没有使用springsecurity,因为我不需要登录,我只需要通过特定的路径进行身份验证。。应用程序没有用户
1条答案
按热度按时间iqjalb3h1#
我只想把我的0.02美元放在这里。为了保护应用程序中的路由,您可以创建一个扩展websecurityconfigureradapter的安全配置,在这里您可以通过antmatcher或mvcmathchers保护某些路由(建议使用第二个)。此外,您可以在那里声明一组角色或条件(通过spring表达式语言),如果没有访问权限的用户试图访问路由,这些角色或条件将自动抛出401错误。更多你可以在这里找到的https://www.baeldung.com/security-spring
至于errorcontroller,我相信控制器建议将更适合这个用例。它几乎截取了您声明的所有错误,并可以返回更多信息和通用的响应:)更多关于这方面的信息https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
作为