【发布时间】:2014-09-08 22:17:30
【问题描述】:
我在这里是因为我尝试了所有方法,但我不明白我做错了什么。
作为后端,我使用 Spring MVC、Rest 和 Spring Security。我正在使用基于令牌(完全无状态)的自定义身份验证系统。我还有一个 CORS 的过滤器,因为我的前端应用程序没有在同一台服务器上运行。
这就是我在 angularJS 中所做的,以便在我想访问受保护的资源时获得身份验证:
- 我创建了一个拦截器,可以更改每个请求以添加从 cookie 中找到的令牌
- 我在请求中添加了一个自定义标头
这是我的拦截器所做的:
request: function(config) {
var token = $cookieStore.get("token");
if (token && token.key) {
config.headers["X-Auth-Token"]=token.key;
}
console.log(config.headers);
return config || $q.when(config);
}
但是当我尝试访问受保护的资源时,即使令牌仍然有效,它也不会将 X-Auth-Token 标头放在请求中!它试图发送一个选项的请求,但由于 401 错误而失败!
但如果我对 url 参数(如 token=....)执行相同操作,拦截器将按预期工作...(我已经实现了两个系统:通过参数和通过标头)
我不明白为什么标题没有按预期放置?以及为什么它与 POSTMAN 之类的东西完美配合?
请帮忙,我正在为此失去头发......
【问题讨论】: