加油站微信智慧加油站支付会不会引起爆炸安全

使用 passport.js 来完成登录验证 - 推酷
使用 passport.js 来完成登录验证
先啰嗦一段背景
介绍一下项目所使用的技术栈。
来完成后端服务器的架构,这个时候就遇到了一个问题了。在我以前,是用
来开发 Web 后端服务器,那时我采用
框架来完成,登录的验证就是比对数据库中的用户名密码与当前用户所输入的用户名密码,而且如果希望拦截未登录的用户的访问某些特定的网址时,我可以添加
自定义的拦截器实现来实现用户未成功验证时的拦截。但是现在我使用的是
来完成开发,不知道该怎么做了,没办法只好 google 一下了,结果推荐较多的就是
passport.js
这个时候已经确定就使用这个 js 库了,好的,开工!但是问题来了,我该怎么使用呢,官方是有文档,英文倒也还好,但总感觉就是有那么点不够清晰,有些细节不一定能好好的解决,为了方便更多人使用这个框架,经过配置成功以后,想把这个的经验分享出来,
好了,进入正题~
使用的依赖包
默认使用的环境就是
搭建的服务器。
# passport 需要 session 的支持,
#由于使用的是 express.js,所以这里使用 express-session
npm install express-session --save
# 当然要下载 passport ……
npm install passport --save
# passport支持一系列的 OAuth 第三方验证,
#而我们一般的使用场景为验证自己项目中的用户
#,所以这里使用 passport-local
npm install passport-local --save
配置服务器
先搭建好服务器用于
的配置,加上
的配置,其中
passport-config.js
文件先导入不管具体实现,不影响我的描述,稍后将在下方给出详细配置方法。
* /server.js
importexpressfrom'express';
importexpressSessionfrom'express-session';
// 导入一个我们配置好了 passport 的 js 文件
importpassportfrom'../core/passport-config';
constserver = express();
// ... 不相干的 express 的配置
// 配置 session,passport 所需的基础,必须有
server.use(expressSession({
// 你喜欢的任意名字作为一个加密用的字符串
secret: 'whatever the name you like',
resave:false,
saveUninitialized:false
// 初始化调用 passport
server.use(passport.initialize());
server.use(passport.session());
到这里为止,我们在服务器上的设置就完成了,接下来看看如何配置
配置 passport.js
我把代码的作用写在了以下代码的注释中,里面详细讲述了大致的原理及作用。
* /core/passport-config.js
importpassportfrom'passport';
importLocalStrategyfrom'passport-local';
// 这里引入的是一个操作数据库的 User 工具函数
importUserfrom'../model/User';
// 这个配置就是参照官方示例来的,不过官方的讲解不够详细
// 我将在这里详细讲讲是怎样获取用户并验证是否正确
passport.use(newLocalStrategy(
* @param username 用户输入的用户名
* @param password 用户输入的密码
* @param done 验证验证完成后的回调函数,由passport调用
function(username, password, done){
// 在编写 User.findUniqueUserByUsername 时,包含两个参数,一个是 username
// 一个是我们现在所传入的回调函数,我们将获取到的用户信息传递给我们的回调函数
User.findUniqueUserByUsername(username, function(err, user){
console.log('出现错误.');
returndone(err);
if(!user) {
console.log('没有找到对应的用户名.');
returndone(null,false, {message:'没有找到对应的用户名.'});
if(user.password != password) {
console.log('密码匹配有误.');
returndone(null,false, {message:'密码匹配有误.'});
returndone(null, user);
// serializeUser 在用户登录验证成功以后将会把用户的数据存储到 session 中(在这里
// 存到 session 中的是用户的 username)。在这里的 user 应为我们之前在 new
// LocalStrategy (fution() { ... }) 中传递到回调函数 done 的参数 user 对象(从数据// 库中获取到的)
passport.serializeUser(function(user, done){
done(null, user.username);
// deserializeUser 在每次请求的时候将会根据用户名读取 从 session 中读取用户的全部数据
// 的对象,并将其封装到 req.user
passport.deserializeUser(function(username, done){
User.findUniqueUserByUsername(username, function(err, user){
returndone(err);
done(null, user);
// 这是封装了一个中间件函数到 passport 中,可以在需要拦截未验证的用户的请求的时候调用
passport.authenticateMiddleware = functionauthenticationMiddleware(){
returnfunction(req, res, next){
if(req.isAuthenticated()) {
returnnext();
res.redirect('/login');
到此基本的配置到此结束,以我的经验,这足以来完成基本的验证使用了。
接下来讲讲如何在
中使用我们上面配置好的
passport.js
配置服务器
中已经加载并使用了我们的配置,现在让我们看看如何在我们的路由中使用它。
// ------------
// server.js
// ------------
importpassportfrom'../core/passport-config';
// 如下所示,我们在路由的请求地址 “/login” 和 后续的请求处理函数之间调用
// passport.authenticate('local'),即可完成对用户输入的用户名密码的验证
server.post('/login', passport.authenticate('local'),function(req, res){
// req.user 中会包含在 deserializeUser 函数中传入的 user 数据
console.log("-------req.user-----------");
console.log(req.user);
console.log("-------req.user-----------");
letreturnData = {
isSuccess:true,
uer: req.user
res.send(JSON.stringify(returnData));
// 调用我们之前在 passport-config 中封装的用于验证用户是否已经被验证的中间件函数
// 即可限制未被验证的用户不能请求该路由,返回 Error: 401(Unauthorized)
server.get('/testAuth', passport.authenticateMiddleware(),function(req, res){
经过实例代码我们知道了如何配置以及使用 passport。解释内容请读者留心代码注释。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致关于passport的问题求教 - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
想使用passport支持第三方登录。
本地测试都OK了,上传到服务器上,本地登录可以,但是通过req.user方法无法获取session里的user对象。在本机上就没这个问题。哪位大神能指点一下啊。
var post = new Post(req.body);
console.log(&请求:& + req.user);
post.user = req.
post.username = req.user.
您好,我看到您项目有使用过passport, 我最近也在用这个passport的google版本. 从登陆到授权都还正常. 但是logout方法退出后, 再次登陆会直接使用之前的账号直接进入系统了. 而不是进入到可以输入账户密码的界面.请问您有没有遇到过这个问题呢, 或者您是怎么处理这个退出系统的操作的. 求教~~~先谢谢啦
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的想入手BB PASSPORT,各位用过的大神们进。_黑莓passport吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:22,100贴子:
想入手BB PASSPORT,各位用过的大神们进。收藏
电量耐用么?安卓软件兼容性怎么样?BB原生软件多么,会跟IOS或者安卓一样定期更新么?(别像WP7一样,全部停更。。。)港版和其他版本区别在哪?欧版,美版会不会翻新比较多?office软件好用么?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或查看: 10278|回复: 22
有大神能破解移动4G吗?
阅读权限10
在线时间 小时
签到天数: 1 天[LV.1]初来乍到
马上注册52BB,享用更多功能,让你轻松玩转黑莓手机。
才可以下载或查看,没有帐号?
如题,主要是用移动的卡,不想再弄个联通卡折腾了。
52BB有你更精彩!
阅读权限30
在线时间 小时
签到天数: 13 天[LV.3]偶尔看看II
基本可能性没有。。。。移动4G是中国特色。。。。要么就换手机吧
52BB有你更精彩!
阅读权限20
在线时间 小时
签到天数: 7 天[LV.3]偶尔看看II
这个不可能的,因为移动4G是中国开发的技术,需要硬件的支持,没办法用软件破解的。。。
52BB有你更精彩!
阅读权限20
在线时间 小时
签到天数: 136 天[LV.7]常住居民III
移动是TD-LTE,基本是不肯支持的
联通说是TD+FDD混合,但是还是不支持,我问过联通客服,说是FDD还没有完全覆盖,估计后期会普及,不知道以后能不能联通4G
52BB有你更精彩!
阅读权限10
在线时间 小时
签到天数: 1 天[LV.1]初来乍到
移动是TD-LTE,基本是不肯支持的
联通说是TD+FDD混合,但是还是不支持,我问过联通客服,说是FDD还没有完 ...
联通到是不错,3G,H+都很快,有没有4G其实没多大关系,可惜了这么好的手机不能移动4G啊,话说移动4G就跟联通3G网速差不多
52BB有你更精彩!
阅读权限10
在线时间 小时
签到天数: 1 天[LV.1]初来乍到
这个不可能的,因为移动4G是中国开发的技术,需要硬件的支持,没办法用软件破解的。。。
据我了解,骁龙800是支持移动4G的,只是黑莓没开放而已
没错,高通801支持td lte,是黑莓从系统上禁掉了&
52BB有你更精彩!
阅读权限20
在线时间 小时
该用户从未签到
硬件的问题,除非自己把TD-LTE芯片焊上去.
52BB有你更精彩!
阅读权限10
在线时间 小时
签到天数: 1 天[LV.1]初来乍到
硬件的问题,除非自己把TD-LTE芯片焊上去.
吊黑莓手机每次都弄的这么尴尬,中国这么大市场就不肯多花点心思,活该要一年不如一年
52BB有你更精彩!
阅读权限10
在线时间 小时
签到天数: 1 天[LV.1]初来乍到
硬件的问题,除非自己把TD-LTE芯片焊上去.
吊黑莓手机每次都弄的这么尴尬,中国这么大市场就不肯多花点心思,活该要一年不如一年
52BB有你更精彩!
阅读权限30
在线时间 小时
签到天数: 178 天[LV.7]常住居民III
楼上的不懂技术, 中移动3G 用的是TD-SCDMA, 全世界独一份的烂技术, 现在没办法了要升级到TD-LTE, 还不成熟的技术,也是为了让TD-SCDMA 的基站还能和4G 公用,也是不得已的选择,全世界通用的WCDMA(3G), FDD-LTE(4G)技术中国不用,所以严格说起来中国现在没有4G, 中移动更是在使用落伍孤立的老技术, 黑莓凭什么要为中国移动用户单独开发TD制式的机器, 也没那个余力去做。 苹果做了,也是个阉割的版本, FDD的制式下手机用的多好, passport拿来使用非常顺畅
52BB有你更精彩!
阅读权限20
在线时间 小时
该用户从未签到
天朝和曹县永远在世界主流之外
52BB有你更精彩!
阅读权限20
在线时间 小时
该用户从未签到
LTE-TD 可不是中国的技术啊,这跟3G 时代的TD完全不是一回事。
52BB有你更精彩!
阅读权限30
在线时间 小时
签到天数: 178 天[LV.7]常住居民III
LTE-TD 确实 不是中国的技术, 但是比较FDD-LTE, 明显是受冷落的,不明白中国为啥总要和别人不一样?这样显得比较有性格吗?
工信部为了平衡国内3运营商。安排移动用的这个频段。要不然联通电信没法活。&
52BB有你更精彩!
阅读权限20
在线时间 小时
该用户从未签到
LTE-TD 确实 不是中国的技术, 但是比较FDD-LTE, 明显是受冷落的,不明白中国为啥总要和别人不一样?这样显 ...
工信部为了平衡国内3运营商。安排移动用的这个频段。要不然联通电信没法活。
你说反了吧?
如果不上TD-LTE是移动没法活而不是联通电信。
为了移动,FDD的牌照押后了半年才发放。&
52BB有你更精彩!
阅读权限20
在线时间 小时
该用户从未签到
硬件不支持 如何破解?
52BB有你更精彩!
阅读权限20
在线时间 小时
签到天数: 3 天[LV.2]偶尔看看I
该贴发送自52BB论坛手机版
垃圾移动,网络差资费高!!!
52BB有你更精彩!
阅读权限20
在线时间 小时
签到天数: 1 天[LV.1]初来乍到
破解不来,要能,我早就不用2G的卡了www.7tzw.la 7天中文
www.7tzw.la/170950/ 医统江山
www.7tzw.la/54192/ 第一百五十三章【错综复杂】(下)
www.7tzw.la/51808/ 第一百五十三章【错综复杂】(上)
www.7tzw.la/51807/ 第一百五十二章【夜袭】(下)
www.7tzw.la/48005/ 第一百五十二章【夜袭】(上)
www.7tzw.la/45661/ 第一百五十一章【打脸】(下)
www.7tzw.la/45660/ 第一百五十一章【打脸】(上)
www.7tzw.la/44429/ 第一百五十张【心机深重】(下)
www.7tzw.la/41264/ 第一百五十章【心机深重】(上)
52BB有你更精彩!
阅读权限20
在线时间 小时
签到天数: 7 天[LV.3]偶尔看看II
工信部为了平衡国内3运营商。安排移动用的这个频段。要不然联通电信没法活。
你说反了吧?
如果不上TD-LTE是移动没法活而不是联通电信。
为了移动,FDD的牌照押后了半年才发放。
你那是4G时候。移动2G和2.5G的时候那时候对联通和电信是碾压的存在,联通电信加一起都被移动虐成狗。所以3G时代工信为了平衡这三方,让联通拿了世界上最大份额的WCDMA,电信是CDMA,前者是欧洲和大部分世界其他国家&
52BB有你更精彩!
阅读权限20
在线时间 小时
签到天数: 3 天[LV.2]偶尔看看I
移动卡,一直是鸡煮,除了国行,水货很少支持4g
52BB有你更精彩!
阅读权限20
在线时间 小时
该用户从未签到
你说反了吧?
如果不上TD-LTE是移动没法活而不是联通电信。
为了移动,FDD的牌照押后了半年才发放。
你那是4G时候。移动2G和2.5G的时候那时候对联通和电信是碾压的存在,联通电信加一起都被移动虐成狗。所以3G时代工信为了平衡这三方,让联通拿了世界上最大份额的WCDMA,电信是CDMA,前者是欧洲和大部分世界其他国家都流行,后者是美国主要模式。移动只能自己搞中国自己弄的TD-CDMA。所以咯,谁都不是傻逼,都知道哪个好,哪个不好,但是没办法,为了工信部的三足鼎立,移动只能忍。3G时代移动的惨状估计你也知道,工信也知道,所以都进入4G时代,稍微照顾了移动。也就是你所说的牌照押后。
52BB有你更精彩!
声明:本论坛所有文章、软件、资源为会员所发布,会员拥有该内容的所有权力及责任!
Powered by

我要回帖

更多关于 冠德微信智慧加油站 的文章

 

随机推荐