>웹 프론트엔드 >JS 튜토리얼 >Express + Node.js 로그인 인터셉터 구현 세부 설명 공유

Express + Node.js 로그인 인터셉터 구현 세부 설명 공유

零下一度
零下一度원래의
2018-05-26 15:22:192616검색

이 글에서는 주로 Express + Node.js에서 인터셉터를 구현하기 위한 예제 코드를 소개합니다. 편집자는 꽤 좋다고 생각해서 지금 공유하고 참고용으로 제공하겠습니다.

소개

여기의 인터셉터는 Spring MVC의 필터에 해당합니다. 모든 http 요청은 인터셉터에 의해 처리된 후에만 해당 코드/리소스에 액세스할 수 있습니다.

가장 일반적인 애플리케이션 시나리오는 액세스 제어를 구현하여 다양한 사용자/사용자 그룹에게 페이지 및 인터페이스에 대한 다양한 액세스 권한을 부여하고 허용된 페이지 및 인터페이스에 대한 액세스만 허용하는 것입니다.

시나리오

app.post('/login', function(request, res, next){
// do something
});
app.post('/getData',function(request, res, next){
// do something
  var data="some data";
  res.send({"data":data});
});

처리가 이루어지지 않으면 getData에 post 요청을 보내는 사람은 누구나 로그인 없이 백그라운드에서 직접 데이터를 읽을 수 있으며 인터페이스만 알면 됩니다.

각 인터페이스에 해당합니다. 각 인터페이스 아래에 권한 판단이 추가되면 코드가 매우 반복되므로 각 http 요청 전에 인터셉터를 추가하여 권한 판단 기능을 수행할 수 있습니다.

구현

// 所有用户可以访问index.html, error.html
// admin可以访问admin.html, /getData
// 登陆用户可以访问home.html
app.all('/*', function(request, res, next){
  // 思路:
  // 得到请求的url
  // 然后得到request的cookie,根据cookie得到当前登陆的用户
  // 判断用户对应url的权限
  var jsPattern=/\.js$/;
  var url=request.orignalUrl;
  if(jsPattern.test(url)){
  // 公共部分,放行
    next();
    return;
  }
  if(url=='index.html'||url=='error.html'){
    next();
    return;
  }
  var cookie=JSON.stringify(req.cookies);
  if(access){
    next();
  }
  else{
    res.redirect('error.html');
  }
});

구현 아이디어:

1. 모든 요청을 가로채고(위 내용이면 충분함) 현재 액세스된 URL을 가져옵니다.

2.
3. URL과 해당 사용자의 ID를 기준으로 접근 가능 여부를 결정합니다.


4. next()를 호출할 수 있으면


5. 접근할 수 없으면

오류 메시지

를 반환합니다.

Attention

    next()는 이전 app.post('/getData')와 같이 원래 요청을 처리한 코드에 해당하는 함수일 뿐입니다. 해당 next();로 반환되므로 처리가 필요합니다. 해당 관계가 양호해야 합니다. 필요한 경우 현재 함수를 종료하려면 반환해야 합니다. 그렇지 않으면 오류가 발생합니다.
  1. js 플러그인, 일부
  2. 사진

    , CSS 부분 등 공개 부분의 경우 직접 공개할 수 있습니다.

위 내용은 Express + Node.js 로그인 인터셉터 구현 세부 설명 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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