Express+Node.js怎么实现登录拦截器-创新互联
小编给大家分享一下Express + Node.js怎么实现登录拦截器,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

js的作用是什么
1、能够嵌入动态文本于HTML页面。2、对浏览器事件做出响应。3、读写HTML元素。4、在数据被提交到服务器之前验证数据。5、检测访客的浏览器信息。6、控制cookies,包括创建和修改等。7、基于Node.js技术进行服务器端编程。
介绍
这边的拦截器,对应于spring MVC中的filter,所有的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. 根据cookie得到当前用户
3. 根据url和用户对应的身份来判断是否可以访问
4. 如果可以调用next();
5. 如果不能访问,返回错误信息
注意
next(); 仅仅是一个函数,对应着原本处理请求的代码,如前面的app.post(‘/getData'),当这里的代码处理完成后会回到对应next(); 处,所以需要处理好对应的关系,如果必要需要return结束当前的函数,不然会出错哒。
对于公共的部分,如js插件,部分图片,还有css的部分,可以直接放行。
看完了这篇文章,相信你对“Express + Node.js怎么实现登录拦截器”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联网站建设公司行业资讯频道,感谢各位的阅读!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:Express+Node.js怎么实现登录拦截器-创新互联
URL标题:http://jxruijie.cn/article/didoid.html
