2016-01-30 60 views
0

我正在開發一個在客戶端使用Extjs-6的Web應用程序,在服務器端使用spring RESTFUL。我如何在春天實現安全?

我的服務器應用程序是RESTFUL。春季應用程序中甚至沒有一個頁面。

客戶端發送一個AJAX請求到服務器,然後服務器響應它。我想添加認證授權我的申請。當用戶打開Web應用程序(Extjs頁面)時,它會發送一個Ajax請求來查看它是否可以轉到儀表板頁面?服務器只能得到truefalse。如果服務器返回true,Extjs可以請求數據用戶。但是如果服務器返回false它將進入登錄頁面。在登錄頁面用戶輸入usernamepassword,然後點擊登錄按鈕,然後發送ajax請求登錄。

在服務器端,收到每個請求,它檢查用戶是否登錄之前,返回合適的響應,否則返回405錯誤。

我該如何實現這個彈簧安全

注意
我不想使用基本身份驗證。我想用Extjs創建一個登錄表單,然後發送一個針對身份驗證的Ajax請求。

回答

0

我假設你有Spring Security的基本知識。

一個典型的使用Spring安全性的Web應用程序,它對用戶進行身份驗證,並根據結果決定是發送受保護的頁面(如果成功)或發送登錄頁面(如果不成功)。

但是在這種情況下,即在REST應用程序中,響應通常是JSON格式。所以我們不能將視圖/頁面發送回客戶端。我們需要發送JSON。

你可以做的是覆蓋和實現你自己的自定義身份驗證處理程序和身份驗證入口點。在這些自定義處理程序中,您可以將自定義的JSON響應發送給客戶端。

您可以實現以下接口:

  • 的AuthenticationEntryPoint:身份驗證失敗時調用。返回401 UNAUTHORIZED狀態。
  • AuthenticationSuccessHandler:您可以在onAuthenticationSuccess方法中處理成功的身份驗證響應。
  • AuthenticationFailureHandler:正如名字所示,它用於處理身份驗證失敗。使用onAuthenticationFailure方法來優化您的失敗響應。
  • LogoutSuccessHandler:使用onLogoutSuccess方法來自定義您的註銷行爲。

例子:
Secure REST Services Using Spring Security
AuthenticationFailureHandler
AuthenticationSuccessHandler

您可以檢查this鏈接,實現無狀態Spring Security認證

+0

我已經在這些鏈接之前閱讀,沒有解決不了的問題。 –

+0

@morteza malvandi向我們展示你到現在爲止做了些什麼,如代碼片段或其他內容。也許這可以幫助。 – Ashyboy