繁体   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