节点和角度。我有一个平均堆栈身份验证应用程序,其中我在成功登录时设置JWT令牌,如下所示,并将其存储在控制器中的会话中。将JWT令牌分配给config。通过服务拦截器的标头:
var token = jwt.sign({id: user._id}, secret.secretToken, { expiresIn: tokenManager.TOKEN_EXPIRATION_SEC });
return res.json({token:token});
authservice.js拦截器(省略了请求错误、响应和响应错误):
authServices.factory('TokenInterceptor', ['$q', '$window', '$location','AuthenticationService',function ($q, $window, $location, AuthenticationService) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
}
};
}]);
现在我想从令牌中获取登录用户的详细信息,我该怎么做?我尝试了如下,但没有成功。当我记录来自用户的错误时。js文件它说“ReferenceError:未定义标头”
authController.js:
$scope.me = function() {
UserService.me(function(res) {
$scope.myDetails = res;
}, function() {
console.log('Failed to fetch details');
$rootScope.error = 'Failed to fetch details';
})
};
authService.js:
authServices.factory('UserService',['$http', function($http) {
return {
me:function() {
return $http.get(options.api.base_url + '/me');
}
}
}]);
Users.js(节点):
exports.me = function(req,res){
if (req.headers && req.headers.authorization) {
var authorization =req.headers.authorization;
var part = authorization.split(' ');
//logic here to retrieve the user from database
}
return res.send(200);
}
我是否必须将令牌作为参数传递以检索用户详细信息?或者也将用户详细信息保存在单独的会话变量中?
您正在用两个回调函数调用函数< code>UserService.me,尽管该函数不接受任何参数。我认为你想做的是:
$scope.me = function() {
UserService.me().then(function(res) {
$scope.myDetails = res;
}, function() {
console.log('Failed to fetch details');
$rootScope.error = 'Failed to fetch details';
});
};
另外,请注意$超文本传输协议方法返回一个响应对象。确保您想要的不是$scope.myDetails=res.data
在Users.js文件中,您直接使用变量< code > headers . authorization ,而它应该是< code > req . header . authorization :
var authorization = req.headers.authorization;
从请求数据中查找令牌:
const usertoken = req.headers.authorization;
const token = usertoken.split(' ');
const decoded = jwt.verify(token[1], 'secret-key');
console.log(decoded);
首先,使用 Passport 中间件进行用户授权处理是一种很好的做法。它需要解析请求的所有肮脏工作,并且还提供了许多授权选项。现在是节点.js代码。您需要使用 jwt 方法验证并解析传递的令牌,然后通过从令牌中提取的 id 查找用户:
exports.me = function(req,res){
if (req.headers && req.headers.authorization) {
var authorization = req.headers.authorization.split(' ')[1],
decoded;
try {
decoded = jwt.verify(authorization, secret.secretToken);
} catch (e) {
return res.status(401).send('unauthorized');
}
var userId = decoded.id;
// Fetch the user by id
User.findOne({_id: userId}).then(function(user){
// Do something with the user
return res.send(200);
});
}
return res.send(500);
}
问题内容: 节点和角度。我有一个MEAN堆栈身份验证应用程序,在其中按如下所述在成功登录时设置JWT令牌,并将其存储在控制器的会话中。通过服务拦截器将JWT令牌分配给config.headers: authservice.js Interceptor(省略了requestError,response和responseError): 现在我想从令牌中获取登录的用户详细信息,我该怎么做?我尝试如下,但
我试图通过查询/tokenendpoint从另一个应用程序中检索spring boot应用程序中的azure JWT访问令牌,但我收到的令牌似乎不正确。 该项目有一个spring boot后端和一个Eclipse rcp前端。我正在尝试从eclipse前端检索访问令牌。对此,我有下面的控制器: 返回具有以下格式的令牌: 使用具有以下相关依赖关系的spring boot构建: v2.2.4 V2.2
我遵循本教程使用JWT令牌。令牌到期时间设置为仅5分钟,但如果我想在使用1分钟后使令牌无效,该怎么办?我希望能够对API进行调用,以删除我的令牌。 我正在使用Express和Node。 从我能收集到的信息来看,我的选择是拥有一个存储令牌的令牌db。当我想让我的令牌过期时,我会从DB中过期/删除该令牌。 我还看到人们随意地说“移除”物理硬盘空间中的令牌,但我无法找出令牌的物理存储位置,以便我移除它。
我将Django JWT与DRF一起使用,将Vue Js与Axios一起使用。当用户登录时,我检索并将令牌存储在本地存储器中,我已验证该令牌可以正常工作。然后我重定向到一个新页面,在那里我提出另一个请求以获取数据。每次我重定向到这个页面,我得到一个401未授权,当我刷新页面,它工作良好。在发出第二个请求之前,我检查了是否存储了令牌。我尝试在创建的钩子中获取重定向页面上的数据。我还创建了一个axio
我试图从过去的贝宝交易中检索捕获请求令牌,因为我需要退款客户。我们的系统上已经没有这些信息了,因为,甚至不问。它看起来像这样: 有可能得到那个吗? 我在这里查看了PayPal的事务搜索API,响应中没有任何内容表明该字段存在:https://developer.paypal.com/docs/API/transaction-search/v1/ 我也检查了贝宝的内置报告,但他们也没有给我们。 此外
1-是否有任何方法从当前实现中获取用户组信息? 2-除了ADAL-Angular之外,是否有可用的库? 3-我可以调用graph API来使用azure adal-angular提供的JWT令牌获取组信息吗? 如有任何建议,请提前致谢。