Angularjs 如何使用$http inceptor将令牌自动附加到请求

Angularjs 如何使用$http inceptor将令牌自动附加到请求,angularjs,node.js,jwt,passport-local,Angularjs,Node.js,Jwt,Passport Local,我正在开发一种身份验证机制 我在服务器端使用nodejs,并且在成功登录时生成jwt令牌 如何在使用Angularjs构建的客户端的后续请求中使用生成的令牌 *成功登录后,我将使用生成的令牌将用户重定向到主页,但我不明白如何前后使用生成的令牌并为api调用提供服务将令牌存储在服务中,我们称之为:authService 然后,在模块的.config中,注入$httpProvider并添加以下内容: $httpProvider.interceptors.push('yourIntercept

我正在开发一种身份验证机制

我在服务器端使用nodejs,并且在成功登录时生成jwt令牌

如何在使用Angularjs构建的客户端的后续请求中使用生成的令牌


*成功登录后,我将使用生成的令牌将用户重定向到主页,但我不明白如何前后使用生成的令牌并为api调用提供服务

将令牌存储在服务中,我们称之为:authService

然后,在模块的.config中,注入$httpProvider并添加以下内容:

    $httpProvider.interceptors.push('yourInterceptor');
然后在同一个文件或其他文件中的某个地方,声明一个服务调用“yourInterceptor”:

angular
    .module('yourModule')
    .factory('yourInterceptor', yourInterceptor);

function yourInterceptor(authService) {
    return {
       request: function(config) {
          // config describe the call that will be made
          // you can modify the url, the headers...etc
          // for example
          config.headers.Authorization = "Bearer " + authService.myWebToken;

          return config;
       }
    }
}

请注意,拦截器还可用于拦截requestError、response、responseError。请参见$http

显示您的尝试。你在客户端已经有令牌了吗?是的,我在客户端路由器中有令牌。post'/login',functionreq,res,next{passport.authenticate'login',functionerr,user,info{if err{return nexterr}if!user{return res.json401,{error:'message};}//用户已正确身份验证,因此我们创建了一个JWT令牌var token=JWT.signuser,'zendynaminxy',{expiresInMinutes:1440//expires in 24小时};//将包括令牌的信息返回为JSON res.redirect/?token=+token;}req,res,next;};。。。通过编辑问题感谢您的快速回复,我正在服务器端生成jwt令牌,并返回到客户端,如下res.redirect/?token=+token;如何在客户端的请求中使用此令牌成功登录时,当用户登录时,请求是这样的,作为响应发送jwt。在角度方面,将其存储在一个服务中(参见上面我的答案),然后将其注入每个请求的头中。在服务器端,对于每个请求,检查jwb。您有一些npm包可以在服务器端帮助您,我喜欢这个:,但这是另一个故事,因为您的问题是关于客户端的;