我正在尝试集成一个非常古老的Java Web应用程序和一个AngularJs前端。我不能使用Spring框架,基本上必须手工编写代码。以下是我的具体问题:
我将登录表单发布到servlet进行身份验证,servlet使用权限对象和Jsessionid进行回复。当我离开并返回页面时,如何避免重新登录?我是否需要另一个cookie来存储用户名/密码?
如何使用此架构提供CSRF保护?
非常感谢一个例子。
答案 0 :(得分:2)
我的建议是将JWT令牌与Satellizer库一起使用,这样可以简化您的工作。在用户登录并向您发出JWT令牌后,他应该在每个http请求上传回此令牌,(Satellizer在成功登录后自动注入)。您需要验证它并相应地允许/限制用户的操作。很少有Java库可以简化服务器端JWT令牌的工作。我已经在我的几个项目jose4j库中使用过,并且对它有积极的经验。
Satellizer和jose4j在他们的维基上都有很好的例子如何使用它们。
答案 1 :(得分:0)
我实际上使用JWT实现了两个解决方案,另一个使用Jsessionid cookie实现了传统的Java Servlet实现。到目前为止,我觉得cookie更干净,所以这里有一些细节:
Login.html将用户名/密码表单发布到servlet。 servlet验证凭据,如果成功则启动新会话(这会产生jsessionid cookie)。如果身份验证失败,则返回HttpServletResponse.SC_UNAUTHORIZED。
一个。如果回调成功,客户端会将浏览器重定向到我的application.html页面。
湾如果失败则提示消息并保留在login.html页面上。