>웹 프론트엔드 >JS 튜토리얼 >귀하의 세션이 만료되었습니다 !!

귀하의 세션이 만료되었습니다 !!

Susan Sarandon
Susan Sarandon원래의
2024-10-29 18:31:29976검색

Your Session has Expired !!

오늘은 특히 프로젝트에서 NextAuth.js를 사용할 때 "세션 만료" 개념에 대해 이야기하고 있습니다. 혼란이 없도록 간단하고 친근한 언어로 이해하십시오.

그러므로 먼저 '세션이 만료되었습니다' 오류의 의미를 이해해 보겠습니다. 사용자의 로그인 세션이 종료되었을 때 나타나는

인증 관련 오류입니다. 예를 들어, 웹사이트나 앱에 로그인하여 한동안 사용했다가 잠시 떠났다가 발생합니다. 다시 돌아왔더니 화면에 '세션이 만료되었습니다. 다시 로그인하세요.'라는 메시지가 나타났습니다. 즉, 이전에 앱에 대한 액세스 권한을 부여한 권한이 만료되었으며, 다시 인증하려면 다시 로그인해야 합니다. 이해해야 할 예: 당신이 쇼핑몰에 있는데 경비원이 입장을 위해

방문자 카드
를 당신에게 주었다고 상상해 보세요. 방문자 카드가 유효한 순간부터 쇼핑몰을 돌아다니고, 쇼핑하고, 영화를 볼 수 있습니다. 하지만 방문자 카드가 1시간 동안만 유효하고 1시간을 초과하면 다시 나가거나 보안요원의 허가를 받아야 합니다. 이처럼 세션도 만료될 수 있는

임시 권한

입니다.

NextAuth 내 세션은 어떻게 작동하나요? 이제 NextAuth.js를 구현하면 거기에도 몇 가지 규칙이 있습니다. 사용자가 로그인하면 NextAuth는 JWT(JSON 웹 토큰)

또는
세션 쿠키

를 사용하여 사용자의 신원을 추적합니다.

JWT

는 사용자의 자격 증명을 인코딩한 후 전송되는 토큰으로, 사용자가 유효한지 여부를 확인하기 위해 모든 요청과 함께 전송됩니다. 세션 쿠키는 브라우저에 저장되며 이를 통해 백엔드는 현재 로그인한 사용자를 알 수 있습니다. 그러나 만료 시간

이 있으며
    구성
  • 을 통해 설정할 수 있습니다. 좋아요: 여기서 maxAge는 세션이 30분 동안만 활성 상태로 유지된다는 의미입니다. 30분 후에 사용자가 페이지 새로 고침이나 요청 등의 작업을 수행하면 세션이 만료되고 사용자는 다시 로그인해야 합니다.
  • 세션 만료를 방지하는 방법
    자동 새로 고침:

    백그라운드에서 세션을 자동으로 새로 고치는

    새로 고침 토큰
    을 구현할 수 있으므로 사용자가 매번 수동으로 로그인할 필요가 없습니다.
  1. 예를 들어 NextAuth에서는 세션 폴링을 수행하여 세션이 자동으로 새로 고쳐지도록 할 수 있습니다.

로그인 유지: 일부 앱에서는 사용자에게 세션 만료 시간을 연장하는 "로그인 유지" 옵션을 제공합니다. 이는 요청이 있을 때마다 새 토큰을 얻는 토큰 순환
을 사용하여 수행할 수 있습니다.

export const authOptions = {
  session: {
    strategy: "jwt", // JWT ya session-based approach
    maxAge: 30 * 60, // 30 minutes ka session timeout
  },
  // baaki authentication providers yahan mention karte hain
}
  1. 자동 로그아웃 메커니즘: 보안상의 이유로 앱에서 의도적으로 세션이 일찍 만료되도록 하는 경우도 있습니다. 뱅킹 앱과 마찬가지로 일정 시간 동안 활동이 없으면 세션이 로그아웃됩니다. 높은 보안을 유지하려면 NextAuth 구성에 이를 추가할 수도 있습니다.

    앱의 실제 시나리오:
  2. 당신이
  3. 전자상거래 앱

    을 사용하고 있고 장바구니에 일부 품목을 추가했다고 상상해 보세요. 세션이 만료되면 다시 로그인하게 되지만 장바구니에 담긴 상품은 그대로 유지됩니다. 이는 장바구니 데이터가 로컬 저장소에 저장되어 있을 수 있기 때문에 가능한 일입니다. 하지만 이메일이나 뱅킹 앱과 같은 일부 민감한 앱에서는 세션이 만료되면 사용자가 강제로 로그아웃해야 합니다.

    친구 여러분, 이것이 세션 만료의 완전한 기초이며 NextAuth.js가 프로젝트에서 이를 처리하는 방법입니다. 이 개념은 처음에는 혼란스러워 보일 수 있지만, 실제 환경에서 구현해 보면 모든 것이 점차 명확해집니다. 특정 부분에 대해 의문이 있거나 더 자세한 내용을 알고 싶다면 언제든지 문의하세요! ?

위 내용은 귀하의 세션이 만료되었습니다 !!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.