nestjs 当前路由若用户没用登录则跳转到登录页面
时间: 2023-09-05 18:07:18 浏览: 48
您可以使用 NestJS 的 Guard 来实现路由守卫,检查用户是否已经登录。在 Guard 中,您可以检查用户是否已经通过身份验证并具有必要的权限来访问受保护的资源。如果用户未通过身份验证,则可以将其重定向到登录页面。以下是一个示例 Guard 的代码:
```typescript
import { Injectable } from '@nestjs/common';
import { CanActivate, ExecutionContext } from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable()
export class AuthGuard implements CanActivate {
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
const request = context.switchToHttp().getRequest();
if (!request.user) {
// 如果用户未通过身份验证,将其重定向到登录页面
response.redirect('/login');
return false;
}
return true;
}
}
```
然后,在您的路由定义中使用该 Guard 保护需要登录访问的路由:
```typescript
import { Controller, UseGuards } from '@nestjs/common';
import { AuthGuard } from './auth.guard';
@Controller()
export class AppController {
@UseGuards(AuthGuard)
async protectedRoute() {
// 只有经过身份验证的用户才能访问此路由
}
}
```
这样,当用户访问受保护的路由时,如果用户未通过身份验证,则会自动重定向到登录页面。