인프런 커뮤니티 질문&답변
ERROR [ExceptionsHandler] request.isAuthenticated is not a function
작성
·
1K
0
@UseGuards(new NotLoggedInGuard), @UseGuards(new LoggedInGuard) - 데코레이터를 회원가입과, 로그인에 각각 추가를 해주고 -> postman으로 회원가입, 로그인 할 시 에러가 발생합니다.
{
"statusCode": 500,
"message": "Internal server error"
}
[Nest] 6463 - 2022. 02. 03. 오후 4:28:14 ERROR [ExceptionsHandler] request.isAuthenticated is not a functionTypeError: request.isAuthenticated is not a function
회원가입, 로그인 라우터에 @UseGuards 를 뺴고 실행 할 시 정상적으로 작동합니다.
not-logged-in.guard.ts, logged. 쪽 auth 폴더쪽을 아에 삭제하고 제로초님 완성본 slack 본 auth 파일을 그대로 가져와서 실행해봤는데 계속 똑같은 에러가 발생하는 거 같습니다.
왜 에러가 발생하는 것일까요..
또 신기한게 로그인 라우터 @UseGuards(LocalAuthGuard)는 정상적으로 동작하는 거 같습니다.
NotLogged, Logged 만 실행이 안되네요..
@ApiResponse({
status: 200,
description: '회원가입 성공',
type: UserDto
})
@ApiOperation({ summary: '회원가입' })
@UseGuards(new NotLoggedInGuard)
@Post()
async SignUpUser(@Body() body: JoinRequestDto) {
await this.userService.SignUpUser(body.email, body.nickname, body.password)
}
@ApiCookieAuth('connect.sid')
@ApiOperation({ summary: '로그아웃' })
@UseGuards(new LoggedInGuard)
@Post('logout')
async logout(@Response() res) {
res.clearCookie('connect.sid', { httpOnly: true });
return res.send('ok');
}
답변 2
1
minsu
질문자
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import passport from 'passport';
import cookieParser from 'cookie-parser';
import session from 'express-session';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { HttpExceptionFilter } from './httpException.filter';
import { ValidationPipe } from '@nestjs/common';
declare const module: any;
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const port = process.env.PORT || 3000;
app.useGlobalPipes(new ValidationPipe())
app.useGlobalFilters(new HttpExceptionFilter());
const config = new DocumentBuilder()
.setTitle('slack API')
.setDescription('slack API 문서 입니다.')
.setVersion('1.0')
.addCookieAuth('connect.sid')
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);
await app.listen(port);
console.log(`Listening on port${port}`);
app.use(cookieParser());
app.use(
session({
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
},
}),
);
app.use(passport.initialize());
app.use(passport.session());
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => app.close());
}
}
bootstrap();
minsu
질문자
@ApiCookieAuth('connect.sid')
@ApiOperation({ summary: '로그아웃' })
@UseGuards(new LoggedInGuard)
@Post('logout')
async logout(@Response() res) {
res.clearCookie('connect.sid', { httpOnly: true });
return res.send('ok');
}
@ApiResponse({
status: 200,
description: '회원가입 성공',
type: UserDto
})
@ApiOperation({ summary: '회원가입' })
@UseGuards(new NotLoggedInGuard)
@Post()
async SignUpUser(@Body() body: JoinRequestDto) {
await this.userService.SignUpUser(body.email, body.nickname, body.password)
}
제로초(조현영)
지식공유자
https://github.com/ZeroCho/sleact/blob/master/nest-typeorm/src/main.ts
코드 순서도 일치해야 합니다.






네 추가 했습니다