二:实现登录认证

  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[]))
当用户验证请求发出后,他会解析请求参数username,password(默认参数),也可以自定义名字,验证完后出发done函数。
done(err):err参数表示在验证过程中出现了异常,如数据库连接问题。
done(null,false):如果凭证无效(例如,如果密码是不正确的)done的第二个参数返回false,表示认证失败。
done(null,false,{msg:'err info'})  认证失败后的失败信息,可通过req.flash访问到
done(null,user)  认证成功并返回user对象
 
自定义的认证字段,用usernameField,passwordField, 对应页面上的input,name属性为email,passwd
new LocalStrategy({ usernameField: 'email', passwordField: 'passwd' },(username,password,done) -> ...)
4:当验证成功,建立会话,并通过cookie维持。passport需要序列化和反序列化的用户实例来支持会话。因此,serializeUser和deserializeUser回调也是必需的。
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登录验证实例(二)的更多相关文章

  1. express+nodecoffee写passport登录验证实例(一)

    项目中要用到passport登录验证,环境如标题样:express框架,coffee模版引擎,node后台 一:建项目 直接用express命令建,虽然默认模版为jade,可以手动换成coffee哦. ...

  2. Shiro安全框架入门篇(登录验证实例详解与源码)

    转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...

  3. passport登录问题:passport.use 方法没有被调用

    写passport登录验证时,无论如何passport.use 方法都没有被调用,最后在同事的帮助下,才找到问题: 我是用form提交登陆数据的, input type:"text" ...

  4. C# mvc中为Controller或Action添加定制特性实现登录验证

    在本文开始前,先简单讲两个知识点: 1.每个action执行前都会先执行OnActionExecuting方法: 2.FCL提供了多种方式来检测特性的存在,比如IsDefined.GetCustomA ...

  5. Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)

    上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页  了解了LigerUI 中Grid的基本用法  现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...

  6. nodeJS---express4+passport实现用户注册登录验证

    网上有很多关于passport模块使用方法的介绍,不过基本上都是基于express3的,本文介绍在express4框架中使用passport模块. 前言 passport是一个功能单一,但非常强大的一 ...

  7. Express + Session 实现登录验证

    1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态.这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我 ...

  8. 搭建开发框架Express,实现Web网站登录验证

    NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证   JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需 ...

  9. 网站注册与登录使用 bcrypt与 passport 双重验证 解释

    网站在登录前,需要进行注册收集用户基本信息,bcrypt 提供密码加密验证的方法,但是使用不正确,会给初学者带来各种问题. bcrypt 的安装: npm i bcrypt 经过测试,经常安装不成功, ...

随机推荐

  1. run a Freight robot (3)

    5.Logging In Once the robot is turned on and the robot is on the network, ssh into the computer of t ...

  2. 未能加载文件或程序集“SQLDAL”或它的某一个依赖项。系统找不到指定的文件

    1. 检查是否SQLDAL.DLL这个程序集文件是否存在,是否在Debug目录下(如果你是在Debug模式下调试).或者看看是否是配置文件中的名称和实际的dll的名称不对应. 2. 你使用的是Asse ...

  3. hdu 5693 朋友 博弈

    朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Descr ...

  4. Nginx模块学习之————accesskey权限模块使用(简单的m3u8防盗链)

    配置文件:http://www.cnblogs.com/tinywan/p/5983694.html 通过加密后的文件: 正确地址:curl -i http://访问的IP地址(这里是直播节点IP地址 ...

  5. android学习---- WindowManager 接口 (

    The interface that apps use to talk to the window manager. 这个接口用于与 window manager (窗口管理器, 应用框架层) 进行交 ...

  6. 使用soapui调用webservice接口

    soapui是专门模拟调用webservice接口的工具,下面介绍下怎么使用: 1.下载soapui并安装: 2.以免费天气获取接口为例:http://www.webservicex.net/glob ...

  7. 数据分析学习(zhuan)

    http://www.zhihu.com/question/22119753 http://www.zhihu.com/question/20757000 ********************** ...

  8. Phoenix - Hbase与SQL

    Phoenix - Hbase与SQL 2016-10-23 杜亦舒 Phoenix是什么 简单来说,Phoenix 是一个可以让我们通过SQL的方式操作HBase数据库的框架. HBase是一个No ...

  9. 20160815_Redis安装

    OS: CentOS6.4(x64) 参考网址: http://www.cnblogs.com/haoxinyue/p/3620648.html http://www.codeceo.com/arti ...

  10. Eclipse安装SVN插件总结

    1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版    如果没有安装的请到这里下载安装:http://ecli ...