用户角色权限系统完整设计(基于shiro)

来源:互联网 发布:java file 编辑:程序博客网 时间:2024/06/13 01:04

一:shiro简介

1.1:shiro可以帮助我们完成:认证,授权,加密,会话管理,与web集成,缓存等。shiro不会去维护用户没维护权限。这些需要我们自己设计提供,然后通过想应的接口注入给shiro。


1.2:shiro的API简单介绍
Authentication : 身份认证/登录,验证用户是不是拥有想应的身份。
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如,验证某个用户是否拥有某个角色,或者细粒度验证某个用户对某个资源是否具有某个权限。
Sessin Manager 会话管理,即用户登陆后就是一次会话,在没有退出之前,他的所有信息都在会话中;会话可以是普通javase环境,也可以是web环境。
Cryptography: 加密,保护数据的安全性,如密码加密存储到数据库,而不是铭文存储。
Web Support : Web支持,可以非常容易的集成到web环境
Caching:缓存,比如用户登陆后,其用户信息,拥有的角色/权限不用每次去查,可以提高效率。
Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
Testing: 提供测试支持。
Run As 允许用户假装为另一个用户的身份进行访问。
Remember Me 记住我,这是一个常见功能,即一次登陆后,下次再来的话就不用登录了。


1.3:从应用程序角度解析shiro工作过程.
应用代码直接交互对象Subject
Subject:主体,代表当前用户。与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等。所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际执行者。
SecurityManager: 安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理者所有Subject;他是Shiro的核心,它负责后面介绍的其他组件进行交互。
Realm:域。Shiro从Realm获取安全数据(用户,角色,权限),就是说SecurityManager要验证用户身份,那么他需要从Realm获取想应得用户进行比较以确定身份是否合法。;也需要才Realm得到用户相应的角色/权限验证用户是否能进行操作。


1.4 最简单的Shiro应用:
1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;
2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。


1.5 从Shiro内部来看Shiro架构

原创粉丝点击