AngularJs和Java Servlet技术

时间:2016-01-04 22:26:08

标签: java angularjs cookies jsessionid

我正在尝试集成一个非常古老的Java Web应用程序和一个AngularJs前端。我不能使用Spring框架,基本上必须手工编写代码。以下是我的具体问题:

  1. 我将登录表单发布到servlet进行身份验证,servlet使用权限对象和Jsessionid进行回复。当我离开并返回页面时,如何避免重新登录?我是否需要另一个cookie来存储用户名/密码?

  2. 如何使用此架构提供CSRF保护?

  3. 非常感谢一个例子。

2 个答案:

答案 0 :(得分:2)

我的建议是将JWT令牌与Satellizer库一起使用,这样可以简化您的工作。在用户登录并向您发出JWT令牌后,他应该在每个http请求上传回此令牌,(Satellizer在成功登录后自动注入)。您需要验证它并相应地允许/限制用户的操作。很少有Java库可以简化服务器端JWT令牌的工作。我已经在我的几个项目jose4j库中使用过,并且对它有积极的经验。

Satellizer和jose4j在他们的维基上都有很好的例子如何使用它们。

答案 1 :(得分:0)

我实际上使用JWT实现了两个解决方案,另一个使用Jsessionid cookie实现了传统的Java Servlet实现。到目前为止,我觉得cookie更干净,所以这里有一些细节:

  1. Login.html将用户名/密码表单发布到servlet。 servlet验证凭据,如果成功则启动新会话(这会产生jsessionid cookie)。如果身份验证失败,则返回HttpServletResponse.SC_UNAUTHORIZED。

    一个。如果回调成功,客户端会将浏览器重定向到我的application.html页面。

    湾如果失败则提示消息并保留在login.html页面上。

  2. 当application.html页面加载时,立即向登录servlet发送一个虚拟get请求,以确保会话仍然有效。如果是,则加载页面的其余部分,如果没有重定向回登录页面。
  3. 使用检查会话ID的Auth过滤器以相同的方式保护Web服务。
  4. 到目前为止它看起来很好而且非常直接。