Apache Shiro 是什么?
Apache Shiro 是一个框架,可用于身份验证和授权
Apache Shiro 特性

a. 身份认证
b.访问权限控制(用户与角色的关系;用户与操作的关系)
c.可以在任何场合使用会话管理
d.支持SSO
e.支持记住密码(支持跨会话的记住身份信息)
f.缓存主要用来进行身份认证和权限控制
Shiro 的正常服务可以单独被部署,不一定必须依赖特定环境。除了单独部署使用,也可以与大多数框架融合使用。
关键词释义
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
ApacheShiro是一个强大的Java安全框架,提供身份验证、授权、会话管理和加密功能。它支持SSO、记住密码,并能独立部署或与其他框架融合。本文解释了Shiro的主要特性和关键概念,如认证、授权、会话管理和记住密码。
355

被折叠的 条评论
为什么被折叠?



