簡體   English   中英

將angularJS與Spring安全性結合使用並發送JSON請求時出現問題

[英]Issue when using angularJS with Spring security and sending JSON request

我正在使用Spring Security進行身份驗證和授權。 為了發送請求,我使用的是Angular JS http.post請求。 示例“ home.jsp”代碼為:

<form role="form">
<div class="form-group">
    <label for="username">Username:</label> <input type="text"
        class="form-control" id="username" name="username" ng-model="userinfo.username"/>
</div>
<div class="form-group">
    <label for="password">Password:</label> <input type="password"
        class="form-control" id="password" name="password" ng-model="userinfo.password"/>
</div>
<button type="submit" class="btn btn-primary" ng-click='login()'>Submit</button>

我的UserInfo類與模型綁定:

UserInfo.java
private String username;
private String password;
// Generated getters & setters

示例“ home.js”是:我正在做以下事情,即我正在將userInfo轉換為JSON字符串。

$scope.login = function() {
$http.post('login', angular.toJson(userInfo)
      .success(function(data) {
       // Some response handling
     })};

登錄名到達服務器並執行所有內置的spring安全過濾器,但是當我調試'UserandPasswordAuthenticationFilter'時,它向我顯示request.getParameter('username')且密碼為NULL。 我正在發送類型為UserInfo類的JSON字符串。 誰能指導我,在執行“ UserandPasswordAuthenticationFilter”之前,添加一個“解析” JSON字符串並轉換為UserInfo對象的新過濾器,並在servlet請求參數中設置用戶名和密碼,同樣,另一個過濾器將對象轉換為JSON同時發送回響應?

請幫助並提出最佳解決方案。

謝謝。

您面臨兩個選擇。 只需發布Spring對您的期望(即簡單的j_username和j_password參數),或者配置一組不同的過濾器和auth提供程序,它們將構造並期望使用不同的令牌(不是現在由UsernamePasswordAuthenticationFilter創建的UsernamePasswordToken)。 您的身份驗證提供程序應該期望新的令牌類型,並在其supports(Class<?> clazz)方法中進行檢查。

暫無
暫無

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

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