【发布时间】:2018-09-09 09:27:19
【问题描述】:
我最近遇到了一个问题,我不知道如何处理它,甚至不知道问题可能来自哪里。
工具:
-MYSQL(用于数据库)
-JAVA EE Web 应用程序(作为后端服务)
-Jersey 2.26 依赖项(在 Web 应用程序/CORS 过滤器上作为 API 提供服务)
-Apache Tomcat/7.0.69(作为网络应用设置的网络服务器)
-Angular 4(作为 API 的网站和客户端)
-CentOS Linux release 7.3 (Core) (服务器操作系统)
问题:
一旦将请求发送到 API(发送到特定的安全端点),我们就可以称它为客户,有时响应是 401 Unauthorized,而在其他时候它工作得很好,例如从角度网站,如果按 f12 和按照请求,我再次发送相同的请求(对于我得到 401 的那个)但是这次它可以工作,JWT 是有效的,它工作得很好,并不是说有太多的请求去服务器,甚至如果它很少,有时我会得到 401,但大多数时候效果很好。
代码中唯一可以返回 401 的是身份验证过滤器,它检查令牌的有效性,但对我来说看起来不错。
我检查了这个article,它谈到了 401 响应,但是,我仍然很难理解为什么它有时会很好地工作,而其他时候对相同的请求却不起作用。我在与网站核对以及与邮递员核对时得到 401。所以我想这不是缓存或 cookie 的事情,但我可能是错误的假设。
关于什么可能是错的任何想法?或者我应该在哪里检查错误或错误?
感谢分配
【问题讨论】:
-
认证方案是什么?
-
您是使用内置的 Tomcat 身份验证还是仅使用过滤器滚动自己的身份验证?如果只是过滤器,将
@WebFilter注解注释掉(如果不使用注解,则将其从web.xml中删除),然后进行测试。如果它工作正常,那就是你的过滤器的问题 -
什么是身份验证方案?,它的基本身份验证,首先用户发送用户名和密码然后他得到一个令牌,他必须使用授权标头中的令牌才能做事,有一个检查令牌本身有效性的网络过滤器,
-
您是使用内置的 Tomcat 身份验证还是仅使用过滤器滚动自己的身份验证?是的,我正在使用我自己的过滤器,与这里的 link 非常相似,感谢您的建议,我会尝试一下。
-
@vikarjramun 我没有
@WebFilter注释,也没有在web.xml 中提及它,我只有nameBiniding 接口,看起来像这样@NameBinding @Retention(RUNTIME) @Target({TYPE, METHOD}) public @interface Secured { }
标签: api http tomcat jersey jax-rs