express+nodecoffee写passport登录验证实例(二)
二:实现登录认证
passport官网文档: http://passportjs.org/guide/
passport验证使用一种被称为“策略”的方式来验证请求,策略支持3种类型的验证:用户名密码验证;OAuth委派验证,OpenID等联合身份验证(facebook,twitter等)。
联合身份认证可参考这里
常用的是LocalStrategy策略来为用户名密码验证,它通过use()函数来调用。
使用步骤:
1:安装模块,passport 和 passport-local
2:添加引用
passport = require 'passport'
LocalStrategy = require('passport-local').Strategy
引用中间件app.use:
passport.initialize()中间件是初始化passport必须的。
passport.session()如果应用程序使用永久登录会话,该中间件也必须使用。
注:该中间件的引用一定要写在app.router之前。原因上一节以说明。
3:配置local-strategy,本地策略
passport.use(new LocalStrategy((username,password,done) ->
User.find {userName:username,password:password},(err, docs) ->
return done err if err?
return done null,false,{message:"用户名或者密码错误"} if docs.length is
done null,docs[]))
new LocalStrategy({ usernameField: 'email', passwordField: 'passwd' },(username,password,done) -> ...)
passport.serializeUser (user, done) ->
done null, user passport.deserializeUser (user, done) ->
done null, user
5: 调用
在用户发出登录请求时触发验证
app.post('/login',
passport.authenticate('local',
{
failureRedirect: '/login',
failureFlash:true
}
),
(req,res) ->
if req.user.role is 'normal' #角色1
res.redirect '/MB/index'
else if req.user.role is 'auditor' #角色2
res.redirect '/audit'
else if req.user.role is 'admin' #管理员
res.redirect '/BM/index'
)
若不分角色 可直接
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' }));
6:页面错误信息参数
app.get '/login',(req, res) ->
res.render 'login', layout:false, error:req.flash('error')
7:登出
app.get('/logout', function(req, res){
req.logout();
res.redirect('/');
});
express+nodecoffee写passport登录验证实例(二)的更多相关文章
- express+nodecoffee写passport登录验证实例(一)
项目中要用到passport登录验证,环境如标题样:express框架,coffee模版引擎,node后台 一:建项目 直接用express命令建,虽然默认模版为jade,可以手动换成coffee哦. ...
- Shiro安全框架入门篇(登录验证实例详解与源码)
转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...
- passport登录问题:passport.use 方法没有被调用
写passport登录验证时,无论如何passport.use 方法都没有被调用,最后在同事的帮助下,才找到问题: 我是用form提交登陆数据的, input type:"text" ...
- C# mvc中为Controller或Action添加定制特性实现登录验证
在本文开始前,先简单讲两个知识点: 1.每个action执行前都会先执行OnActionExecuting方法: 2.FCL提供了多种方式来检测特性的存在,比如IsDefined.GetCustomA ...
- Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)
上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页 了解了LigerUI 中Grid的基本用法 现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...
- nodeJS---express4+passport实现用户注册登录验证
网上有很多关于passport模块使用方法的介绍,不过基本上都是基于express3的,本文介绍在express4框架中使用passport模块. 前言 passport是一个功能单一,但非常强大的一 ...
- Express + Session 实现登录验证
1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态.这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我 ...
- 搭建开发框架Express,实现Web网站登录验证
NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证 JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需 ...
- 网站注册与登录使用 bcrypt与 passport 双重验证 解释
网站在登录前,需要进行注册收集用户基本信息,bcrypt 提供密码加密验证的方法,但是使用不正确,会给初学者带来各种问题. bcrypt 的安装: npm i bcrypt 经过测试,经常安装不成功, ...
随机推荐
- Qt修改xml文件
<taskpackage styleId="styles/2dc70235-e48b-4e11-b074-3c3f773ae1f3" id="3333" ...
- ORA-01009: 必需的参数缺失
第一步:看看是否有参数没有配: 第二步:如果第一步没问题,那么请在英文半角下把sql语句重新写一遍 以上~
- linux包的相关命令
apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package ...
- CA*Layer(CATransformLayer--CAGradientLayer)
CATransformLayer CATransformLayer不同于普通的CALayer,因为它不能显示它自己的内容.只有当存在了一个能作用域子图层的变换它才真正存在.CATransformLay ...
- 微博传播数量和传播深度的预测--基于pyspark和某个回归算法
8-28决定参加一下这个千万条的数据处理任务,因为场景和自己做过的一个回归分析预测差不多,第一天开始在小规模的数据上做准备工作. 第二次大修改版本 date 20160829 星期一¶ 原始数据处理, ...
- mac系统如何进行剪切
来源: http://jingyan.baidu.com/article/1612d5007f76e7e20e1eeeca.html 分步阅读 mac os x下没有像windows中现成的“剪切”命 ...
- iOS - KVC 键值编码
1.KVC KVC 是 Key-Value Coding 的简写,是键值编码的意思,属于 runtime 方法.Key Value Coding 是 cocoa 的一个标准组成部分,是间接给对象属性设 ...
- sqlplus命令大全
一.ORACLE的启动和关闭 1.在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oracle a.启动ORACLE系统oracle>svrmgrlSVR ...
- 转载 - LINUX下查看CPU使用率的命令
几个常用的命令,一些不错的解释 http://blog.csdn.net/wengpingbo/article/details/6302058 1.top 使用权限:所有使用者 使用方式:top [- ...
- php imagecreatetruecolor输出字符符或验证码
$img = imagecreatetruecolor(100,100); //创建真彩图像资源 $color = imagecolorAllocate($img,200,200,200); //分配 ...