2017-06-01 51 views
0

我正在阅读Express JWT Permissions的文档,但不明白如何将当前用户的权限保存在令牌中。我只看到如何检查已经设置的权限。快递JWT权限:如何设置权限?

任何人都可以发布设置权限的示例吗?例如假设我们对用户进行了身份验证,并且想给他一个管理员权限。

回答

0

这不是那个lib的问题。设置令牌值不是任何jwt权限库的一部分,它们假定在执行中间件时已经设置了正确的值。

这是我的公共node seed project提取,看看如何在一个令牌

import * as jwt from 'jsonwebtoken'; 
const router = Router(); 
router.get('/api/v1/token', (req: Request, res: Response, next: NextFunction) => { 
    const token = jwt.sign({ someData: 'foobar' }, config.getJwtSecret()); 
    res.json({ token: token }); 
}); 

代码设置值的例子。

0

您应该添加“权限”属性,智威汤逊有效载荷的所有权限用户的阵列有:

import * as jwt from 'jsonwebtoken'; 

public static authenticate(req: Request, res: Response, next: NextFunction) { 
    const payload = { 
    name: 'John', 
    surname: 'Smith', 
    username: 'john.smith', 
    permissions: ['USER', 'ADMIN'], 
    }; 
    const options = { 
    expiresIn: Number(process.env.JWT_TTL), 
    }; 
    const token = jwt.sign(payload, process.env.JWT_SECRET, options); 
    res.status(201).send({ token }); 
} 

以后,当用户发送的请求与授权令牌,你应该使用快递,智威汤逊 - 允许lib中检查用户是否拥有正确的权限:

const guard = require("express-jwt-permissions")(); 

// all user routes 
this.routes.use('/api', guard.check('USER')); 
// ... 

// all admin routes 
this.routes.use('/api/admin/', guard.check('ADMIN')); 
// ...