logistics-9-system privilege management(Apache Shiro)

来源:互联网 发布:c语言编程图书管理系统 编辑:程序博客网 时间:2024/05/16 17:05

业务:
1.登陆控制(使用shiro实现登陆控制)
2.登陆拦截控制和用户注销退出
3.使用shiro完成权限管理
4.对shiro用户授权信息应用ehcache缓存
5.使用itext生成pdf报表文件

技术点:
1.shiro的原理和实现
2.ztree的使用
3.Ehcache的配置和使用
4.报表技术:
    Itext生成pdf报表
    springMVC视图解析器生成pdf报表

01:【权限数据模型分析】

权限数据模型
包含四个部分 (资源、 权限、 角色、 用户 )
资源: 为系统添加权限,对哪些页面 或者 哪些数据进行控制
权限: 具有某个资源访问能力 (权限可以对应一个资源 或者 多个资源)
角色: 权限的集合 ,简化软件项目中授权 
用户: 访问系统的人,具有系统中一个或者多个角色,具有多个权限,可以访问资源 
这四个概念之间都是多对多关系 

资源:包括超链接、页面中的按钮等

两种常见的权限控制方式
1.传统的url级别权限控制方式

用户具有角色,角色具有权限,权限具有资源 ,资源对应url 路径。当访问这个url路径时,判断当前用户是否具有url资源权限
2.基于方法级别权限控制方式

基于方法级别权限控制,比URL级别权限控制 粒度更精确

02:【权限控制数据表设计】

企业主流权限框架
Spring Security 安全框架
           必须要和spring 一起使用,繁重复杂
Apache Shiro 安全框架 
           可以单独使用,从命令行应用,大型软件 都是使用, 轻量简单易用 

Shiro 可以定制权限控制逻辑,对数据表 没有直接要求 (存在 用户、角色、权限 概念)

1.为什么要使用Apache Shiro框架?
登录拦截器只是验证是否登录,未登录就不能访问页面。而登录后能看到和点击哪些链接,就需要用Apache Shiro框架来进行控制。
2.Apache Shiro的特征和简介
点击打开链接

设计权限数据表
五张表:
auth_function 权限表
auth_role     角色表
t_user        用户表 
user_role     用户角色关系表
role_function 角色权限关系表
说明:使用shiro做权限控制,不需要资源表 ,因为不是基于url进行权限控制,通常是基于注解控制 
如果存在权限,则动态生成菜单, 在function表添加菜单相关属性 !
xxxx
xxxx
xxxx
xxxx
xxxx

03:【使用shiro实现登陆控制】

shiro核心组件及功能
参考在线文档:点击打开链接
shiro体系架构:点击打开链接
         
 三大核心组件: 
 Subject 登陆用户
 SecurityManager 安全管理器
 Realms 权限校验代码逻辑

四个核心功能:
Authenticator 认证 (用户身份识别 )
Authorizer 授权器(权限控制)
SessionManager (支持 native session 和 http session )
CacheManager 缓存管理器

04:【登陆拦截控制和用户注销退出】

sssss

05:【使用shiro完成方法级别权限控制(一)】

aaaaa

06:【使用shiro完成方法级别权限控制(二)】

sssss

07:【使用shiro的tag控制页面权限】

sssss

08:【动态ztree菜单生成】


【day10-----------------------------------】

01:【使用shiro关于admin账户授权】

ddddd

02:【在spring中配置Ehcache缓存】

1.为什么使用Ehcache?
每次需要shiro做权限控制, Realm的授权方法就会被调用, 查询数据库重新完成授权! (想一想hibernate中二级缓存也是要配置Ehcache的)
简单理解:因为每次都要查询权限数据,而权限数据又不会经常变化,所以将其保存在缓存中会大大提高效率
问题: 性能开销比较大 
2.解决方案?
 对用户授权,只进行一次 查询,查询后,将用户授权信息放入缓存中,以后需要授权时,直接从缓存中获取数据,而无需查询数据表
3.JavaEE主流缓存技术?
JBossCache/TreeCache
OSCache
Ehcache
SwarmCache

这里使用我们最熟悉的Ehcache缓存技术
使用Spring框架 集成 EhCache 
ddd
步骤:
1.导入Ehcache的jar包
<dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache-core</artifactId><version>2.6.6</version></dependency>
2.使用Ehcache 在classpath 下,创建缓存框架配置文件 (ehcache.xml )
将导入ehcache的jar 中 ehcache-failsafe.xml 改名 ehcache.xml 复制 src/main/resources

3.对Spring 进行 Ehcache 整合

4.通过Spring 提供缓存注解,对数据进行缓存
@Cacheable和@CacheEvict:对缓存进行操作
@Cacheable:负责将方法的返回值加入到缓存中
@CacheEvict:负责清除缓存


5.整合shiro 缓存管理器 


03:【对shiro用户授权信息应用ehcache缓存】

dddddd

04:【使用itext生成pdf报表文件】

dddddd



Interview
1.三个核心组件 、四个主要功能 
2.安全认证、授权 原理流程 分析清楚 (基于注解 方法级别的权限控制 )
3.内置大量自定义标签 (页面控制)
4.动态Ztree菜单生成  
5.权限模型数据表设计


0 0
原创粉丝点击