一、Shiro简介
1).Apache Shiro是Java的一个安全(权限)框架。
2).Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,还可以用在JavaEE环境。
3).Shiro可以完成:认证,授权,加密,会话管理,与Web集成,缓存等。
4).下载地址:http://shiro.apache.org/
二、功能简介
1).Authentication:身份认证/登录,验证某个用户是不是拥有相应的身份。
2).Authorization:授权,即权限验证,验证已认证的用户是否拥有某个权限;即判断用户是否能进行某种操作
,如:验证某个用户是否拥有某个角色。或者粒度更细的验证某个用户对某个资源是否具有权限。
3).Session Manager:会话管理,中即用户登录后就是一次会话,在没有退出之前,它所有的信息都在会话中,
会话可以是普通的javaSE环境,也可以是Web环境。
4).Cryptorgraphy:加密,保护数据的安全性,如加密密码存储到数据库,而不是明文储存。
5).Web Support:Web支持,可以非常容易的集成到Web环境。
6).Caching:缓存,比如用户登录以后,其用户信息,拥有的角色/权限不必每次查询,这样可以提高效率。
7).Concurrency:Shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过
去。
8).testing:提供测试支持。
9).Run as:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问。
10).Remember Me:记住我,这个是非常重要的功能,即一次登录后,下次再来访问的话不用登录了。
三、Shiro架构
1).Subject:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject。Subject代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的委托任何东西都是Subject,如网络爬虫,机器人等;与Subject的所有交互都会委托给SecurityManager;Subject其实是一个门面,SecurityManager才是实际的执行者。
2).SecurityManager:安全管理器,即所有与安全相关的操作都会参与SecurityManager交互;且其管理所有的Subject;可以看出它是Shiro的核心,它负责与Shiro的其他组件进行交互,相当于SpringMVC中的DispatcherServlet的角色。
1).Apache Shiro是Java的一个安全(权限)框架。
2).Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,还可以用在JavaEE环境。
3).Shiro可以完成:认证,授权,加密,会话管理,与Web集成,缓存等。
4).下载地址:http://shiro.apache.org/
二、功能简介
1).Authentication:身份认证/登录,验证某个用户是不是拥有相应的身份。
2).Authorization:授权,即权限验证,验证已认证的用户是否拥有某个权限;即判断用户是否能进行某种操作
,如:验证某个用户是否拥有某个角色。或者粒度更细的验证某个用户对某个资源是否具有权限。
3).Session Manager:会话管理,中即用户登录后就是一次会话,在没有退出之前,它所有的信息都在会话中,
会话可以是普通的javaSE环境,也可以是Web环境。
4).Cryptorgraphy:加密,保护数据的安全性,如加密密码存储到数据库,而不是明文储存。
5).Web Support:Web支持,可以非常容易的集成到Web环境。
6).Caching:缓存,比如用户登录以后,其用户信息,拥有的角色/权限不必每次查询,这样可以提高效率。
7).Concurrency:Shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过
去。
8).testing:提供测试支持。
9).Run as:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问。
10).Remember Me:记住我,这个是非常重要的功能,即一次登录后,下次再来访问的话不用登录了。
三、Shiro架构
1).Subject:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject。Subject代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的委托任何东西都是Subject,如网络爬虫,机器人等;与Subject的所有交互都会委托给SecurityManager;Subject其实是一个门面,SecurityManager才是实际的执行者。
2).SecurityManager:安全管理器,即所有与安全相关的操作都会参与SecurityManager交互;且其管理所有的Subject;可以看出它是Shiro的核心,它负责与Shiro的其他组件进行交互,相当于SpringMVC中的DispatcherServlet的角色。
3).Realm:Shiro从Realm获取安全数据(如用户,角色,权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较确定用户身份是否合法;也需要从Realm得到相应的用户角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource。