ノードアプリにJWT認証システムを入れました。
インターセプターを使用して、すべてのリクエストに Bearer を配置しました。Angular 内で制限されたルートを呼び出すか、curl してヘッダーでトークンを指定すると、うまく機能します。
しかし、制限されたルートをアドレス バーに直接入力すると、機能しません。ヘッダーには Bearer がなく、インターセプターを通過しません。
これが私のインターセプターです(クライアント側):
angular.module('myApp).factory('authInterceptor', function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.localStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.localStorage.token;
}
return config;
},
responseError: function (rejection) {
if (rejection.status === 401) {
// handle the case where the user is not authenticated
}
return $q.reject(rejection);
}
};
});
angular.module('myApp').config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});
これが私の制限されたルートです(サーバー側):
router.get('/restricted', expressJwt({secret: 'SecretStory'}), function(req, res) {
res.json({
name: 'You are allowed here !!'
});
})
制限されたルートをアドレスバーに直接入力する場合でも、リクエストごとにベアラーをリクエストヘッダーに追加する方法は?