Node.js与Sails~方法拦截器policies
policies
sails的方法拦截器类似于.net mvc里的Filter,即它可以作用在controller的action上,在服务器响应指定action之前,对这个action进行拦截,先执行policies的策略,当条件通过,会next()它,继续执行本方法,当条件不满足时,你可以终端这个请求,在sails里,policies也经常被用在权限判断上,如登陆用户可以访问某个action,管理员权限可以访问指定action等等。
一 首先定义一个过滤器(策略)/policies/adminAuth.js
/*** adminAuth* Created by zzl on 2015/10/14.*/ module.exports = function (req, res, next) {if (!req.session.user.isAdmin) {return res.send("you are not administrator!");}next(); };
二 在策略配置项里为指定的controller添加指定的策略/config/policies.js
module.exports.policies = { testController:{'*': 'sessionAuth','admin':['adminAuth']} };
上面的代码*表示test控制器里的所有action都会被添加上sessionAuth这个过滤器,而第二行 'admin':['adminAuth']表示为admin这个action,添加adminAuth这个过滤器,它使用[]包含,表示一个action可以有多种过滤器去修饰!
如果希望所有的controller的所有action都添加某个过滤器,我们需要把策略写在外面,如下面的代码
module.exports.policies = { '*': 'sessionAuth',//all controller action };
上面对应全局的过滤器一般用在后台管理系统上,但这种全局过滤器加上后,需要把登陆,登出这种页面排除掉,否则,你无法进行登陆页了,哈哈,代码如下
module.exports.policies={ '*': 'sessionAuth',//all controller action commonController:{'*':true//不走全局*过滤器 } }
三 直接运行代码,你的test控制器下的所有action都需要进行登陆后才可以访问,而admin这个action需要是有管理员权限的用户才可以访问,下面做了一个简单的测试
模拟登陆
/*** Created by zzl on 2015/10/14.*/ module.exports={login:function(req,res)//模拟用户登陆 {req.session.user={isLogin:true}console.log( req.session.user);return res.send("用户登陆成功")},adminLogin:function(req,res)//模拟管理员登录 {req.session.user={isLogin:true,isAdmin:true}console.log( req.session.user);return res.send("管理员登陆成功")} };
第一次运行程序
用户登陆
第二次进行这个页面,就正常显示内容了
通过这几篇sails的文章,我们应该有种体会,那就是所有技术都是相通的,可能代码写法不一样,但是思想上是保持一致的,哈哈!
武术不分国界 :P
本文转自博客园张占岭(仓储大叔)的博客,原文链接:Node.js与Sails~方法拦截器policies,如需转载请自行联系原博主。
相关文章:

MySQL性能与磁盘读写的关系及优化策略
作者:kider出处:MySQLpub.com转贴请表明作者和出处并不能用于商业目的。这些天,对一个场地服务器慢的情况,进行了监控跟踪,也得出一些好的结论。现在记录一些过程,列出可以供参考的部分,同时有一…

今晚8点直播 | 详解微软小冰全双工语音对话技术
微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本、全双工语音与实时视觉的新感官。这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互成为可能。而采用…

httpd.2.4虚拟主机配置测试
测试目标:三个虚拟主机,要求如下vhost1: phpMyAdmin, 同时提供https服务;vhost2: wordpress配置过程:一、配置vhost11、首先配置vhost1,先搭建私有CA在172.16.20.242上搭建私有CA: (1) 创建私钥…

视频批量转换为FLV的软件开发总结(1)——思想总结篇
视频批量转换为FLV的工作中,完全是因为项目中用到流媒体服务器管理发布视频。原始的数据可能是.mpg、.avi等格式的,这就需要大量的转换工作量,批量转换工具的需求很明显了。 原始准备使用外面的专门的视频转换软件Total Video Converter&…

https简单配置
SSL会话过程(1)客户端发送可供选择的加密方式,并向服务器请求证书(2)服务器端发送证书以及选定的加密方式给客户端(3)客户端取得证书并进行证书验证;如果新人给其发证书的CA…

突破电信3G宽带对网页浏览的上网限制
从上周开始用我189的手机卡插入到我的无线上网卡中就不能正常打开网页了,其它的IM(如QQ、旺旺等)都正常。ping www.sina.com.cn这些网址也是很正常的。foxmail收邮件也很正常。本来还想可能是网络比较忙或者其它的什么原因,但跟踪…

ClassLoader知识收集
阅读提示:全文认真阅读大约需要1个半小时时间,如果你需要在IDE中验证并理解,大约需要3个小时,如果你想自己写个类似的类加载器并调试,估计还需要3个小时。该知识点的掌握检测与否,你可以尝试其回答Java每日…

Linux下PS1设置
在测试机上每次执行命令总要用sudo -u ads开头,比较麻烦。索性用: sudo su ads 就可以直接用ads用户名进行操作了。 但是用这种方式之后,命令的前缀就变成了"bash-3.2$ ",相当不习惯,经过网上搜索࿰…

Android API 中文 (51) —— ZoomButtonsController
一、结构 public class ZoomButtonsController extends View implements View.OnTouchListener java.lang.Object android.widget.ZoomButtonsController 二、概述 ZoomButtonsController处理缩放控件的显示和隐藏并且定位其在相关父视图的位置。他也可以做为缩放控件的…

火爆GitHub的《机器学习100天》,有人把它翻译成了中文版
作者 | 红色石头转载自AI有道(ID:redstonewill)今天给大家介绍一个在 GitHub 上非常火的机器学习实战项目,叫做 100-Days-Of-ML-Code,中文名为《机器学习 100 天》。目前该项目已经收获了 1.7w stars 了。下面是项目地址ÿ…

新浪程序员加班改bug,竟错失77万年会大奖
作者 | 伍杏玲转载自CSDN(CSDNnews)好消息!还有不到二十天就放大假!大伙盼着过年盼着年会盼着抽中大奖!昨天有一位新浪码农真的抽中头等奖了——2000 股新浪股票,价值 77 万人民币啊!然并卵&…

Linux简单的颜色设置
通过alias,在~/.bashrc里配置: alias l.ls -d .* --colortty alias llls -l --colortty alias lsls --colortty alias vivim alias whichalias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde

第106天:Ajax中同步请求和异步请求
同步请求和异步请求的区别 1、同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的。信息错…

排除一例电脑启动故障
晚上一上班,版式组小连来电话,说是排版过程中,电脑突然死机,重启,提示Disk I/O error:status00008036 NTDETECT失败断电,拆机,放电(开机键反复按下松开按下松开几次&…

登陆成功率 99%,云知声携手平安好医生推声纹登录系统
近日,云知声宣布与医疗健康生态平台平安好医生(01833.HK)共同研发的“声纹登录系统”(又称声纹锁)经过多次模型优化和升级迭代后,登录成功率接近 99%,达行业一流水准。 声纹识别(Voiceprint Rec…

知方可补不足~开发人员可以自己定义VS文件模版
团队开发,最重要的是什么? 统一的规范,对于一个团队,在开发项目之前,必须要先告诉大家项目的规范是什么,而开发人员在实际当中再去执行这个规范,对于规范事实上是个很宏观的概念,它可…

sql server日志占用空间过大的问题
一、关于日志的基本知识:在 SQL Server 2000 和 SQL Server 2005 中,每个数据库都至少包含一个数据文件和一个事务日志文件。SQL Server 在该数据文件中以物理方式存储数据。事务日志文件存储您对 SQL Server 数据库执行的所有修改的详细信息,…

svn 回归某一个特定版本
svn回归某一个特定版本: 先用svn log查看回归版本的版本号 version 然后用命令 svn up -r version

NA-NP-IE系列实验7:CDP
实验7:CDP<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. 实验目的通过本实验,读者可以掌握如下技能:(1) 查找CDP 邻居(2) 熟悉CDP 的配置2. 实验拓扑图…

吴恩达“官宣”荣升准爸爸~
整理 | 琥珀 出品 | AI 科技大本营 “我们的最新‘成果’ Baby Ng 即将诞生!2019 年 2 月见面!” 1 月 17 日(北京时间 1 月 18 日凌晨),人生赢家吴恩达冷不丁在推特上晒出了妻子孕期中的照片(如仙子一般漂…

分布式版本控制系统 Git 教程
简介 Git 是什么? Git 是一个开源的分布式版本控制系统。 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 什么是分布式版本控制系统? 介绍分布式版本控制系统前,有…

Chrome插件HostAdmin
进入Chrome webstore:https://chrome.google.com/webstore/category/home 搜索 hostadmin,可以搜索到Pidgin的HostAdmin插件,直接安装即可。

设计模式——6适配器模式(Adapter)
6、适配器模式(Adapter)适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 核心思想就是&#x…

中国人口将迎来负增长,这是旷视们的机会
作者 | 阿司匹林 出品 | AI科技大本营 1 月 16 日,人工智能创业公司旷视科技在北京举办机器人战略发布会,发布了旷视机器人战略的核心产品——“河图(Hetu)”,用智能网络协同系统来改造传统的物流仓储行业。同时旷视还…

就看你怎么去运作
从前,有一个地方叫美国。有一个老头有三个儿子,其中大儿子、二儿子都在城里工作,他和小儿子相依为命在乡下生活。这一天,来了一个人,对他说:“我能不能把您的小儿子带到城里去工作?”老头说&…

安装EBS前期检查工具 - RDA - Health Check / Validation Engine Guide
参考文档 RDA - Health Check / Validation Engine Guide (文档 ID 250262.1) 先下载 RDA 补丁包。 Download HCVE/RDA安装RDA : Example:tar xvf rda.tarorgunzip rda.tar.gztar xvf rda.tarorunzip rda.zipNote:Each rda package (.zip, .tar, and .tar.gz) will cre…

啥是佩奇?Python告诉你
作者 | 丁彦君来源 | 恋习Python昨天,被《啥是佩奇》这支广告片刷屏了。佩奇明明是个喜剧角色,却看哭了所有人。▼《啥是佩奇》???快过年了在农村爷爷给城里的小孙子打电话小孙子说想要“佩奇”为了满足小孙子的愿望爷…

Linux中bashrc河bash_profile
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. ~/.bash_profile 调用 ~/.bashrc 每个用户…

arcgis server 开发
不知道有多少人采用 adf 做开发,不知为什么,感觉在web 上用他老不爽 javascript api http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jssamples_start.htm silverlight api http://resources.esri.com/help/9.3/arcgis…

详解谷歌最强NLP模型BERT(理论+实战)
作者:李理,环信人工智能研发中心vp,十多年自然语言处理和人工智能研发经验。主持研发过多款智能硬件的问答和对话系统,负责环信中文语义分析开放平台和环信智能机器人的设计与研发。 本文是作者正在编写的《深度学习理论与实战》的…