验证角色,现在是由中间件来帮忙添加用户角色信息,跟进头部信息来的。实际的话可能就是跟进用户ID查数据库来得到。
This commit is contained in:
parent
81eee14d5d
commit
aaa24cac23
|
@ -14,6 +14,15 @@ export class DemoRolesGuard implements CanActivate {
|
||||||
|
|
||||||
const roles = this.reflector.get<string[]>('roles', context.getHandler())
|
const roles = this.reflector.get<string[]>('roles', context.getHandler())
|
||||||
console.log(roles)
|
console.log(roles)
|
||||||
return false;
|
|
||||||
|
if (!roles) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
const request = context.switchToHttp().getRequest();
|
||||||
|
const { user } = request;
|
||||||
|
const hasRole = () => user.roles.some(item => roles.includes(item))
|
||||||
|
|
||||||
|
return user && user.roles && hasRole();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,21 @@ import { Injectable, NestMiddleware } from '@nestjs/common';
|
||||||
export class DemoMiddleware implements NestMiddleware {
|
export class DemoMiddleware implements NestMiddleware {
|
||||||
use(req: any, res: any, next: () => void) {
|
use(req: any, res: any, next: () => void) {
|
||||||
console.log('hello ~')
|
console.log('hello ~')
|
||||||
|
req.user = {
|
||||||
|
roles: [
|
||||||
|
'guest'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.header('x-demo') === 'secret') {
|
||||||
|
req.user = {
|
||||||
|
roles: [
|
||||||
|
'member'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue