NestJS: AuthGuard を使用しないでください.
Я хочу, чтобы GET-запрос работал для всех пользователей: авторизованных および анонимных.私はあなたのことを知っていて、私はあなたのことを知っていました. Например, заметку может получить анонимный пользователь, а зарегистрированный пользователь ещё получит информацию о статусе этой заметке: Она в избранном, автор у пользователя в друзьях и т.п.
これは、NestJS を使用することをお勧めします. Но их можно написать самому. Я предлагаю на мой взгляд простое решение.
Сперва вводная часть: Авторизация у меня проходит при помощи jwt , поэтому в проекте обязательно должны быть сделаны рекомендованные шаги (переписывать их сюда я не стал). AuthGuard (JwtAuthGuard を追加) を追加しました. В поставленной задаче нам не нужно выбрасывать ошибку, так что если пользователь не авторизован, то вместо его id, email или что там у Вас в токене зашифровано, можно вернуть null.
タイトル:
jwt.guard.ts
JwtAuthGuard - 保護されたガードであり、保護されていない保護機能です.
AllowNullUserGuard - ガードを保護し、null を保護し、null を保護します.
この記事の内容は次のとおりです.
Здесь используется декоратор @User :
これは、NestJS を使用することをお勧めします. Но их можно написать самому. Я предлагаю на мой взгляд простое решение.
Сперва вводная часть: Авторизация у меня проходит при помощи jwt , поэтому в проекте обязательно должны быть сделаны рекомендованные шаги (переписывать их сюда я не стал). AuthGuard (JwtAuthGuard を追加) を追加しました. В поставленной задаче нам не нужно выбрасывать ошибку, так что если пользователь не авторизован, то вместо его id, email или что там у Вас в токене зашифровано, можно вернуть null.
タイトル:
jwt.guard.ts
import { Injectable } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {}
/**
* Неавторизованные пользователи могут воспользоваться службой.
* При этом user будет равен null
*/
@Injectable()
export class AllowNullUserGuard extends AuthGuard('jwt') {
handleRequest(err, user) {
// Если пользователь на авторизован, то user = null
return user || null;
}
}
JwtAuthGuard - 保護されたガードであり、保護されていない保護機能です.
AllowNullUserGuard - ガードを保護し、null を保護し、null を保護します.
この記事の内容は次のとおりです.
@Get(':slug')
@UseGuards(AllowNullUserGuard)
async getSingleArticle(
@Param('slug') slug: string,
@User() currentUser: UserEntity | null,
) {
return currentUser;
}
Здесь используется декоратор @User :
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { ExpressRequest } from '@app/types/expressRequest.interface';
export const User = createParamDecorator((data: any, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest<ExpressRequest>();
if (!request.user) return null;
if (data) {
return request.user[data];
}
return request.user;
});
Reference
この問題について(NestJS: AuthGuard を使用しないでください.), 我々は、より多くの情報をここで見つけました https://dev.to/slkarol/nest-authguard-4knpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol