Как манипулировать файлами cookie в Passport- JS AuthGuard с помощью Nest JS? - PullRequest
0 голосов
/ 26 января 2020

Итак, я настроил локальную и JWT-стратегии нормально, и они прекрасно работают. Я установил JWT cook ie через маршрут входа в систему. Я также хочу установить токен refre sh cook ie, а затем удалить и сбросить токен JWT через JWT AuthGuard, обновив его вручную и установив для флага ignoreExpiration значение true.

Я хочу иметь возможность манипулировать файлами cookie через JWT AuthGuard. Я уже могу просматривать их, но я не могу установить их. Есть ли способ сделать это?

/************************
 * auth.controller.ts
 ************************/

import { Controller, Request, Get, Post, UseGuards } from '@nestjs/common';
import { AuthGuard }                                 from '@nestjs/passport';
import { AuthService }                from './auth/auth.service';
import { SetCookies, CookieSettings } from '@ivorpad/nestjs-cookies-fastify';
import { ConfigService }              from '@nestjs/config';


@Controller('auth')
export class AuthController {
    constructor(
        private readonly authService: AuthService,
        private readonly configService: ConfigService,
    ) {}

    @UseGuards(AuthGuard('local'))
    @Post('login')
    @SetCookies()
    async login(@Request() request) {
        const jwtCookieSettings = this.configService.get<CookieSettings>('shared.auth.jwtCookieSettings');
        request._cookies = [{
            name   : jwtCookieSettings.name,
            value  : await this.authService.signJWT(request.user),
            options: jwtCookieSettings.options,
        }];
    }


    @UseGuards(AuthGuard('jwt'))
    @Get('profile')
    async getProfile(@Request() req) {
        return req.user;
    }
}

/************************
 * jwt.strategy.ts
 ************************/
import { Strategy, StrategyOptions } from 'passport-jwt';
import { PassportStrategy }          from '@nestjs/passport';
import { Injectable, Request }       from '@nestjs/common';
import { ConfigService }             from '@nestjs/config';

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
    constructor(private readonly configService: ConfigService) {
        super(configService.get<StrategyOptions>('shared.auth.strategy.jwt.strategyOptions'));
    }

    async validate(@Request() request, payload: any) {
        return payload;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...