이 글에서는 주로 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
위 내용은 Express + Node.js 로그인 인터셉터 구현 세부 설명 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!