【发布时间】:2016-07-28 15:09:18
【问题描述】:
在coupletutorials 使用 jsonwebtoken、passport 和 passport-local 添加身份验证之后,我一直坚持将其集成到 my project。我想要它,以便对任何 API 端点的任何请求都需要身份验证,并且对触及 API 的前端的任何请求都需要身份验证。
现在发生的情况是我可以让用户登录并注册,但一旦他们登录,他们仍然无法访问需要身份验证的页面。用户收到 401 错误。就像令牌没有在请求中正确传递一样。
我也尝试添加“身份验证拦截器”
myApp.factory('authInterceptor', function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
},
response: function (response) {
if (response.status === 401) {
// handle the case where the user is not authenticated
}
return response || $q.when(response);
}
};
});
myApp.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});
但这似乎也没有用。
我忘记或错过了什么?
编辑:
输入凭据并单击登录后,我在 chrome 控制台中收到此错误
GET http://localhost:3030/members/ 401 (Unauthorized)
但在我成功通过身份验证后,我的导航链接显示应有的。
我也在运行 Node 的终端中收到此错误
UnauthorizedError: No authorization token was found
at middlware (/ncps-mms/node_modules/express-jwt/lib/index.js)
...
编辑:
当我注入我的auth 对象时,这与我的服务器路由的this line 有很大关系。基本上我认为我的身份验证令牌没有通过我的GET 请求发送。但我认为当我将身份验证对象传递给 GET 请求时会发生这种情况。
编辑:
编辑/更新:
我相信我已经解决了身份验证问题,但我的成员视图状态问题在身份验证后仍然无法呈现。我有pushed my latest changes to github,如果你提取最新的并运行,你会看到你可以进行身份验证,但单击 View 链接无法加载视图。
【问题讨论】:
-
你有没有调试检查你是否进入了 if than 在标题周围?
-
@Walfrat 我不明白你在问什么。
-
你是不是用了浏览器的debogger,下个断点看看configer.header.Authorization这行是否被执行了?
-
我已经取得了一些进展,但即使通过身份验证,我的视图仍然无法呈现。请查看我对 OP 的更新。
-
两件事:在您的登录中,您同时使用 .error 和 .thne 功能。通常你要么使用 .succes/.error 要么使用 .then(successCallback, errorCallback)。不知道会不会有什么麻烦。其次,您应该执行一个 angular.run,它将为所有 ui-router 事件添加侦听器,以便您能够跟踪您的状态错误。
标签: angularjs passport.js passport-local json-web-token express-jwt