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