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 经过测试,经常安装不成功, ...
随机推荐
- CUBRID学习笔记 37 ADO.NET Schema Provider
通常需要添加以下引用: 1 2 3 using System.Data; using System.Data.Common; using CUBRID.Data.CUBRIDClient; 定义连 ...
- .net 浏览器请求过程(图)
大致: 细节: (信息来源于传智播客教学视频)
- TCP三次握手及四次挥手详细 转
一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: ...
- How To Use API Online?
Example: 在线 java8 api 1.http://docs.oracle.com/javase/8/docs/api/ 2.ctrl+f 3.输入类名! 4.
- spring集成quartz scheduler
创建项目 有两种创建quart配置作业 1.使用MethodInvokingJobDetailFactoryBean Quartz Scheduler 配置作业(MethodInvokingJobD ...
- 项目问题总结:Block内存泄露 以及NSTimer使用问题
BLock的内存泄露 在我们代码中关于block的使用可以说随处可见,第一次接触block的时候是关于UIView的块动画,那时觉得block的使用好神奇,再后来分析总结为block其实就是一个c语言 ...
- iOS 开发之 Xcode6 installation failed invalid argument!
1.运行模拟器的时候 报出: installation failed invalid argument! 原因分析: 我把Bundle indentifier 置为空了! http://stackov ...
- JSP中RequestDispatcher的用法
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中.RequestDispatcher接口中定义了两个方法:inclu ...
- maven相关资料
http://www.yiibai.com/maven/ Maven教程 https://www.zhihu.com/question/20104270 http://huangnx.com/tags ...
- 转!!MAC和PHY的区别
一块以太网网卡包括OSI(开方系统互联)模型的两个层,物理层和数据链路层.物理层定义了数据传送与接收所需要的电与光信号.线路状态.时钟基准.数据编码和电路等,并向数据链路层设备提供标准接口.数据链路层 ...