Apache Shiro 是什么?html
Apache Shiro 是一个框架,可用于身份验证和受权web
Apache Shiro 特性算法
a. 身份认证数据库
b.访问权限控制(用户与角色的关系;用户与操做的关系)apache
c.能够在任何场合使用会话管理缓存
d.支持SSO微信
e.支持记住密码(支持跨会话的记住身份信息)框架
f.缓存主要用来进行身份认证和权限控制加密
Shiro 的正常服务能够单独被部署,不必定必须依赖特定环境。除了单独部署使用,也能够与大多数框架融合使用。spa
关键词释义
Authentication:认证,也就是验证用户的身份,就是肯定你是否是你,好比经过用户名、密码的方式验证,或者某些第三方认证,好比微信认证。
Authorization:受权,也叫访问控制,也就是看你是否有权限作什么事情,好比是否有权限看某个文件,或者是否有权限作后台管理;
Cipher:加密方式,这里主要有几种经常使用的加密方式,好比分组密码(Block Ciphers)、流密码(Stream Ciphers)、对称加密(Symmetric Ciphers)、非对称加密(Asymmetric Ciphers)
Credential:证书,好比密码、指纹或者网银的Key都算是证书的一种。系统经过将用户提供的证书和系统存储的证书比较,若是一致就认为用户的身份是对的;
Hash:哈希,一种单相的数据加密算法;
Persmission:权限,用于描述系统的某项基础功能,好比 “打开一个文件”,“查看’/user/list/’页面”,“打印文档”,这些都算是一种权限;
Principal:身份,就是一种用于标识用户身份的一种属性,好比邮箱、电话号码、用户名、微信号等;
Realm:这是一个用于访问应用程序的用户、角色、权限的组件,能够把它看作是Shiro的DAO(Data Access Object),用于把各类存储介质(好比关系数据库、LDAP、文件)内的用户权限数据转换为Shiro可以理解的格式。
Role:角色,在Shiro中,角色就是权限的组合;
Session:会话,也就是用户登陆以后的上下文,在用户登出以前能够不用传递用户名、密码就能够作各类操做;
Subject:起始就是user,可是在Shiro中把它叫作Subject,由于和咱们系统交互的不必定是人,也多是其余的系统。
重要操做:
获取当前用户
Subject user= SecurityUtils.getSubject();
验证登陆
UsernamePasswordToken token = new UsernamePasswordToken(username, password); Subject subject = SecurityUtils.getSubject(); try { subject.login(token); return R.ok(); } catch (AuthenticationException e) { return R.error("用户或密码错误"); }
拥有某个角色
currentUser.hasRole(RoleName)
拥有某个权限
currentUser.isPermitted("order:add")
用户是否有权限访问某种类型数据的某个具体实例
currentUser.isPermitted("order:get:order2")
几个简单的操做基本能够知足认证和权限两部分的平常操做
参考 : http://www.cnblogs.com/strinkbug/p/6117353.html
参考: https://www.ibm.com/developerworks/cn/web/wa-apacheshiro/index.html
参考: https://www.infoq.com/articles/apache-shiro