gpt4 book ai didi

java - 简单的 REST 端点身份验证

转载 作者:行者123 更新时间:2023-11-29 04:11:11 24 4
gpt4 key购买 nike

我正在了解我的端点的安全性,但我搜索的所有内容都包含非常复杂的示例,这些示例并没有真正回答我的问题,现在,为了这个示例项目,我正在寻找一些简单的东西。

我目前的解决方案是让端点像这样返回:

return authenticate(request.headers) ? cityService.getCity() : utils.unauthenticatedResponse();

其中 authenticate(request.headers) 检查 header 中的 token 。我想要改进的是在对我的端点的每个请求之前运行该身份验证方法(除了登录和注册),这样我就可以返回 cityService.getCity(),而我不必每次都进行检查.

感谢每一个答案,但请让你容易理解,因为我只是一个初学者。

最佳答案

由于您需要在每次请求之前运行authenticate 方法,因此您需要实现一个Filter。它非常简单,您可以获得实现过滤器的步骤和模板 here .

对端点的每个请求都将首先通过过滤器(这是可配置的),您可以在其中使用 authenticate 方法,然后相应地进一步允许它。

对于初学者,您可以实现如下过滤器:

@Component
public class AuthFilter implements Filter {

@Override
public void doFilter
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest) request;
if(authenticate(req.getHeaders)){
chain.doFilter(request, response);
} else {
//else logic, ie throw some exception in case authenticate returns false
}
}

}

这样做的好处是:

  • 您可以实现多个过滤器
  • 您可以为过滤器提供顺序/优先级
  • 您可以配置哪些端点需要通过过滤器,哪些不需要。

关于java - 简单的 REST 端点身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969174/

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