【发布时间】:2020-01-15 05:16:14
【问题描述】:
我正在使用 Angular+Nest 开发一个网站。我创建了一个服务(Angular),以便客户端可以在项目启动时从服务器获取用户信息(与新鲜相同)。有些动作不需要登录,所以登录是可选的。
我想要的是如果用户已经登录,那么客户端应该发送一个请求来获取用户的信息。
服务器代码如下:
export const RequestUser = createParamDecorator((data, req): RequestUserDTO => {
return req.user;
});
@Controller('auth')
export class AuthController {
@Get('getUserInfoByToken')
async getUserInfoByToken(@RequestUser() user: User): Promise<any> {
if (user) {
return {
nickname: user.nickname,
level: user.level
};
}
}
}
但是,如果我不添加 @UseGuards(AuthGuard()) 作为装饰器,我发现没有任何回报。但是如果我添加它,当项目启动时,这个请求会返回401 作为状态码。然后网页会转到登录页面。
我应该怎么做才能避免这种情况?并非每个操作都需要登录。
【问题讨论】: