Node.JS - Foal 프레임워크 - 버전 2.2가 출시되었습니다.

이 문서는 원래 https://foalts.org/blog/2021/02/25/version-2.2-release-notes에 게시되었습니다.

Foal 프레임워크의 버전 2.2가 출시되었습니다! 이것이 가져다주는 개선 사항은 다음과 같습니다.

createapp 명령의 새로운 모습


createapp 명령의 출력이 더 "환영"하도록 꾸며졌습니다.



단일 페이지 애플리케이션(SPA)에 대한 인증 개선



쿠키 기반 인증으로 SPA를 구축할 때 때때로 사용자가 로그인했는지 또는 사용자에 대한 특정 정보를 얻기가 어려울 수 있습니다(isAdmin 등).

인증 토큰은 httpOnly 지시문이 true로 설정된 쿠키에 저장되기 때문에(XSS 공격을 완화하기 위해) 프런트 엔드 애플리케이션은 추가 요청을 제외하고는 사용자가 로그인했는지 알 수 있는 방법이 없습니다. 서버에.

이 문제를 해결하기 위해 버전 2.2에는 선택한 콘텐츠로 프런트엔드에서 읽을 수 있는 추가 쿠키를 설정할 수 있는 새로운 옵션userCookie이 추가되었습니다. 이 쿠키는 세션과 동기화되며 요청이 있을 때마다 새로 고쳐지고 세션이 만료되거나 사용자가 로그아웃하면 삭제됩니다.

다음 예에서 user 쿠키는 로그인한 사용자가 없으면 비어 있거나 사용자에 대한 특정 정보를 포함합니다. 이는 사용자 특성에 따라 UI 요소를 표시해야 하는 경우에 특히 유용합니다.

서버 측 코드

function userToJSON(user: User|undefined) {
  if (!user) {
    return 'null';
  }

  return JSON.stringify({
    email: user.email,
    isAdmin: user.isAdmin
  });
}

@UseSessions({
  cookie: true,
  user: fetchUser(User),
  userCookie: (ctx, services) => userToJSON(ctx.user)
})
export class ApiController {

  @Get('/products')
  @UserRequired()
  async readProducts(ctx: Context) {
    const products = await Product.find({ owner: ctx.user });
    return new HttpResponseOK(products);
  }

}


쿠키



클라이언트 측 코드

const user = JSON.parse(decodeURIComponent(/* cookie value */));


foal generate|g rest-api <name>에서 중첩 경로 지원


g controller 명령과 마찬가지로 g rest-api는 이제 중첩 경로를 지원합니다.

다음과 같은 파일 구조가 있다고 가정해 보겠습니다.

src/
 '- app/
  |- controllers/
  | |- api.controller.ts
  | '- index.ts
  '- entities/
    |- user.entity.ts
    '- index.ts


이 명령을 실행하면 다음 파일이 추가되고 등록됩니다.

foal generate rest-api api/product --auth --register
foal generate rest-api api/order --auth --register



src/
 '- app/
  |- controllers/
  | |- api/
  | | |- product.controller.ts
  | | |- order.controller.ts
  | | '- index.ts
  | |- api.controller.ts
  | '- index.ts
  '- entities/
    |- product.entity.ts
    |- order.entity.ts
    |- user.entity.ts
    '- index.ts

좋은 웹페이지 즐겨찾기