【发布时间】:2018-08-22 12:52:21
【问题描述】:
我正在使用 Spring 安全性进行身份验证。从 UI 如果我在请求正文中发布用户名和密码,那么我会遇到 HTTP 401 错误。但是,如果我在 URL 中发布用户名和密码,那么它工作正常。
请找到我的 Spring Security 配置:
<http auto-config="true" use-expressions="true">
<form-login login-processing-url="/rest/auth/j_spring_security_check"
login-page="/rest/requiredlogin" authentication-failure-handler-ref="authFailureHandler"
authentication-success-handler-ref="authSuccessHandler"
username-parameter="username" password-parameter="password" />
<logout logout-url="/rest/auth/logout" invalidate-session="true" delete-cookies="true" success-handler-ref="authLogOutSuccessHandler"/>
<csrf disabled="true" />
</http>
请找到我的 UI 请求:
login(userName, password): Observable<any> {
const loginData = {'username' : userName, 'password' : password};
const authUrlParam = 'rest/auth/j_spring_security_check';
return post(authUrlParam, loginData);
}
post(url: string, data: any): Observable<any> {
console.log('Posting Data to Server url : ' + environment.serverUrl + url);
const reqOp: RequestOptions = this.getHeaders();
const returnResponse = this.http
.post(environment.serverUrl + url, data, reqOp)
.map((response: Response) => response.json().data)
.catch(this.handleError);
return returnResponse;
}
我正在使用以下技术:
春季:4.3.9.RELEASE Spring Security:4.2.3.RELEASE 角度:5.2.7
我正在寻找一种在正文中发布凭据的解决方案。否则,如果我在 URL 中发布,那么任何人都可以看到凭据。
【问题讨论】:
-
您是否尝试将
username和password作为 URL 搜索参数字符串而不是 JSON 数据传递给您的发布请求?例如使用 URLSearchParams() -
我看到了。我要说的是而不是
JSON,您是否尝试在帖子正文中传递username=someusername&password=somepassword字符串? -
@mj_1,它有效。谢谢。
标签: spring angular spring-security angular5 angular-http