인증 프로세스가 무엇입니까#삼.

인증에서 인증으로의 전환


인용문:


지난번에 우리는 req.login() 함수의 비밀 호출로 OAuth 과정에 대한 탐색을 끝냈다.이것은 단지 여권을 넣는 작은 장점일 뿐이라는 것을 명심하세요.js 중간부품은 우리의 프로젝트에서 역할을 발휘한다.그래서 여권 고마워요.지금 우리는 계속 서열화할 수 있다.이때 우리의 제어 흐름에서 인증이 끝난 후에 사용자 정보는 Verify 리셋의 done() 함수에서 체인의 다음 함수serializeUser()로 전달되고 있습니다.이 기능은 새로운 사용자 세션의 구축을 상징하고 우리가 탐색하는 마지막 단계이기도 하다.

사용자 세션이란 무엇입니까?


나의 연구에서 나는 사람들이 사용자 세션을 정의하는 몇 가지 다른 방식을 만났지만, 우리의 목적에서 우리는 이를 사용자가 특정 시간대에 요청한 캐시로 간주했다.이 기간은 호출req.login()부터 시작되며, 물론 호출req.logout()시에 끝난다.그런데 잠깐만요. 여권도 있어요.js의 숨겨진 마법이 재연되다.logout() 함수는 요청 대상에 공개되고 루트 프로세서에서 호출됩니다.나는 내가 이런 연락을 놓치기 쉽다는 것을 안다. 주로 범위가 다르기 때문이다.따라서 여권 사슬에서 찾은 것은 logout() 이 아니다.인증 정책에 설정된 js 함수는 사용자가 외출할 때 호출됩니다. 사용자가 로그아웃을 눌렀을 때 불을 끄는 것과 같습니다.

코드 예: 라우팅 프로세서의 logOut () 함수 호출


apiRouter.get('/logout', (req, res) => {
  req.logOut();
  req.session.destroy();
  res.redirect('/');
});

위의 코드 블록에서 logout() 함수의 위치를 시각적으로 호출할 수 있습니다.이 코드 블록은 내 프로젝트에서 사용하는 OAuth 정책 설정의sperate 파일에 위치하고 흐름을 제어하는 맵에서 삭제하는 방법을 설명합니다.우리가 잊어버리기 전에 serializeUser() 되돌아봅시다.

그럼 서열화는 어디에 어울릴까요?


사용자 정보가 사용자 세션이 시작될 때 검증 리셋에서 serilazeUser() 로 전달되면 로그인과 로그아웃 함수 간에 서열화된다는 것을 기억하십시오.serailizeUser() 함수의 작업은 일부 사용자 데이터 (이 예에서 id) 를 세션 쿠키에 저장할 수 있는 형식으로 변환하는 것입니다.세션 쿠키는 브라우저에 전송되고 세션 동안 유지됩니다.회화 과자의 베이킹과 장식은 일종의 즐거움이다. 우리는 다음에 토론할 것이다.

코드 예: Passport.js serializeUser() 함수


passport.serializeUser((user, done) => {
  done(null, user);
});

위의 코드 블록을 검사할 때, 사용자 대상과 serializeUser() 함수 두 개의 인자를 받아들일 수 있습니다.이 때 done() 어떤 사용자 정보를 done에 전달함으로써 세션 쿠키로 번역할 사용자 정보를 지정합니다.호출이 완료되면 저희 코드는 serializeUser() 로 전달되고 저희 데이터베이스에서 번역 데이터와 일치하는 사용자를 찾을 것입니다.이러한 사용자 정보의 서열화와 반서열화는 우리 응용 프로그램이 서버에서 모든 사용자 데이터의 안전을 유지할 수 있도록 합니다. 쿠키는 세션 id만 포함하고 이 id는 세션의 전체 생명 주기 동안 이 사용자의 요청을 지속적으로 권한을 부여하는 데 사용됩니다.

코드 예: Passport 구현js deserializeUser() 함수


passport.deserializeUser((user, done) => {
  getUser(user) 
    .then((foundUser) => {
      if (foundUser) {
        done(null, foundUser);
      } else {
        console.log('no user with that id found');
      }
    })
    .catch((error) => {
      console.log(error);
    });
  });

세션이 만료되지 않았거나 로그아웃 경로를 누르지 않았을 경우, 정렬화/반정렬화 집합은 사용자가 권한을 부여받아 정보를 제공할 수 있도록 합니다.내가 이전에 언급하지 않은 함수 중 하나는 deserializeUser() 함수이다.이 방법은 Express의 일부입니다.Passport 자체가 아니라 js 프레임워크입니다.응용 프로그램의 구조에서 특별히 사용하지 않는 한 js는 흐름을 제어합니다.destroy() 방법은 세션 쿠키를 제거하고 사용자 권한을 종료하며 OAuth 프로세스를 다시 시작하여 향후 요청에 서비스를 제공할 것을 요구합니다.

결론:


이 점에서 우리는 모든 단계와 이 절차에 참여하는 참여자를 탐색했다. 이 절차는 사용자에 대한 신분 검증과 권한 수여를 위해 취해야 한다.나는 내가 매우 재미있는 일을 배웠다는 것을 안다. 나는 너도 배웠으면 좋겠다.전체 다이빙의 최대 수확:
신분 검증은 자신이 누구인지 증명하는 과정이고, 권한 수여는 특정한 분야에 들어가거나 특정한 서비스를 사용하거나 특정한 내용을 볼 수 있는 과정이다.여기에는 모든 선원이 승선 허가를 받을 수 있지만 일부 구성원만 장교 식당에서 밥을 먹을 수 있다는 재미있는 비유가 있다.
나는 곧 돌아와서 새로운 화제를 처리할 것이다.많은 선생님들이 나에게 네가 많이 쓸수록 너는 많이 성장할 수 있다고 말씀하셨다. 그래서 나의 발전 기능이 끊임없이 향상되는 것을 확보하기 위해 나는 끊임없이 글을 쓸 것이다.
즐거운 인코딩!!!

자료 출처:
  • 위키백과.com(https://en.wikipedia.org/wiki/Session_(computer_science))
  • 어떻게 표현합니까?js 세션이 유효합니까?( https://tilomitra.com/how-do-nodejs-sessions-work/ )
  • 여권.조직(http://www.passportjs.org/docs/configure/
  • Passport JS'OAuth flow() 엔진 덮개 아래의 엿보기
  • 좋은 웹페이지 즐겨찾기