簡體   English   中英

AngularJs和Java Servlet技術

[英]AngularJs and Java Servlet technology

我正在嘗試集成一個非常古老的Java Web應用程序和一個AngularJs前端。 我不能使用Spring框架,基本上必須手動編寫代碼。 這是我的具體問題:

  1. 我將登錄表單發布到servlet進行身份驗證,該servlet回復了一個權限對象和一個Jsessionid。 當我離開並返回頁面時,如何避免重新登錄? 我是否需要另一個cookie來存儲用戶名/密碼?

  2. 如何使用此架構提供CSRF保護?

一個例子將是非常贊賞。

我的建議是將JWT令牌與Satellizer庫一起使用,這可以簡化您的工作。 用戶登錄后,您向他頒發了JWT令牌后,他應該在每個http請求上回傳該令牌(Satellizer在成功登錄后自動注入它)。 您需要驗證它並相應地允許/限制用戶的操作。 很少有Java庫可以簡化服務器端JWT令牌的工作。 我在幾個項目jose4j庫中使用過,並且對它有積極的經驗。

Satellizer和jose4j在其wiki上都有很好的示例,介紹了如何使用它們。

我實際上實現了兩種解決方案,一種使用JWT,另一種使用傳統的Java Servlet實現(使用Jsessionid cookie)。 到目前為止,我覺得其中一個cookie更加干凈,因此以下是一些詳細信息:

  1. Login.html將用戶名/密碼表單發布到Servlet。 Servlet驗證憑據,如果成功,則啟動新的會話(這將導致jsessionid cookie)。 如果身份驗證失敗,則返回HttpServletResponse.SC_UNAUTHORIZED。

    一種。 如果回調成功,則客戶端會將瀏覽器重定向到我的application.html頁面。

    b。 如果失敗,則提示消息,並停留在login.html頁面上。

  2. 當application.html頁面加載時,它會立即向登錄servlet發送一個虛擬的get請求,以確保會話仍然有效。 如果是,它將加載頁面的其余部分,如果不是,則重定向回登錄頁面。
  3. 使用檢查會話ID的Auth過濾器以相同的方式保護Web服務。

到目前為止,它看起來不錯,非常簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM