【问题标题】:Issue when using angularJS with Spring security and sending JSON request使用带有 Spring 安全性的 angularJS 并发送 JSON 请求时出现问题
【发布时间】:2015-05-09 12:02:32
【问题描述】:

我正在使用 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 同时发送响应?

请帮助并提出最佳解决方案。

谢谢。

【问题讨论】:

  • 能否请您发布当前的 UserandPasswordAuthenticationFilter 代码?

标签: java angularjs spring spring-mvc spring-security


【解决方案1】:

您面临两种选择。要么只是发布 Spring 对您的期望(即简单的 j_username 和 j_password 参数),要么配置一组不同的过滤器和身份验证提供程序,它们将构造并期望不同的令牌(不是现在由 UsernamePasswordAuthenticationFilter 创建的 UsernamePasswordToken)。您的身份验证提供者应该期待新的令牌类型并在其 supports(Class&lt;?&gt; clazz) 方法中检查它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多