当前位置: 首页 > 知识库问答 >
问题:

如何获取当前登录的用户角色jwt节点

钱选
2023-03-14

您好,我正在使用平均堆栈和jwt登录,我想限制一些数据只有userRole'admin'这是我的user.js

const userSchema = new Schema({
    email: {type : String, required : true , unique : true},
    password: String,
    role: {type : String, enum: ["reader", "admin"]},
});

这就是我验证jwt令牌的方法

function verifyToken(req, res, next) {
  if(!req.headers.authorization) {
    return res.status(401).send('Unauthorized request')
  }
  let token = req.headers.authorization.split(' ')[1]
  
  if(token === 'null') {
    return res.status(401).send('Unauthorized request')    
  }
  let payload = jwt.verify(token, 'secretKey')
  if(!payload) {
    return res.status(401).send('Unauthorized request')    
  }
  
  
  req.userId = payload.subject
  next()
}

这是我希望使用verifyToken函数仅为'admin'角色限制的数据

router.get('/special', verifyToken, (req,res) => {
    let specialEvents = [//data...]
}

我的问题是,我如何访问当前登录的用户信息,并仅使管理员可读的/特殊的

共有1个答案

单于煌
2023-03-14

嗨,您需要在代码中添加一些内容。(因为您需要提供更多细节)。

// Generate an access token
const accessToken = jwt.sign({ username: user.username,  role: user.role }, accessTokenSecret);

const token = authHeader.split(' ')[1];
    jwt.verify(token, accessTokenSecret, (err, user) => {
        if (err) {
            return res.sendStatus(403);
        }
        res.locals.loggedUser = user;
        return next();
    });
 类似资料:
  • 用户已作为用户角色登录,我想以员工身份登录而不提交登录表单,但身份验证失败, 请查一下密码,帮帮我 @requestmapping(value=“/home”)public ModelAndView userHomePage(Model Model,HttpServletRequest request,HttpServletResponse response,Principal Principal

  • 如何获取当前登录用户的型号?例如,如果系统职员和管理员中有两种类型的用户?我如何知道用户属于哪个模型?

  • sp_get_current_userid() 功能: 获取当前登录用户ID 参数: 无 返回: int,当前登录的用户id,如果未登录返回0

  • 接口说明 获取当前登录用户的ID 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /usercenter/api/userinfo/v1.0.0/getLoginUserId 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说明 参数

  • 接口说明 获取当前登录用户的ID 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /usercenter/api/userinfo/v1.0

  • 我已经为当前用户从数据库加载了角色。并且我可以用JSP中的Spring Security表达式访问用户角色,可以用HasRole隐藏未经授权的选项和URL。现在,我希望将它放在servlet中,并将其显示在日志中(或存储在用户对象会话中)。怎样才能实现呢?