每个系统都会提供很多功能,但并不是每个人登陆以后,可以操作的功能是完全相同的,需要对系统的功能进行访问控制。
权限管理数据模型:
共需要五张表
权限表:该系统中所有的功能,可以是菜单或者按钮等等
角色表:该系统中各个岗位,如管理员,取派员,仓库,会计等等
用户表:即该系统中所有可以登录的用户
角色权限关系表:各个岗位所对应的功能,如会计只能访问账单,仓库管理员只能访问仓库管理
用户角色权限关系表:每个用户所对应的角色,张三是会计,李四是仓库管理员等等
shiro框架是一个请打而灵活的开源安全框架,能够干净利落地处理身份认证,授权,企业会话管理和加密。
利用shiro可以完成的功能:
1.验证用户
2.对用户执行访问控制
判断用户是否拥有角色admin
判断用户是否拥有访问色权限
3.在任何环境下使用Session API
4.可以使用多个用户数据源。例如是oracle用户率,另外一个是mysql用户库
5.单点登录sso功能
6.Remember Me 服务,类似购物车的供能,shiro官方介意开启
shiro框架提供的权限控制的方式:
url拦截进行权限控制 框架提供了很多过滤器进行url拦截
方法注解进行权限控制 框架提供了在方法上使用的注解,为Action创建代理对象,进行权限控制
页面标签权限控制:框架提供一套标签,用于根据权限展示或者隐藏按钮或菜单
代码级别权限控制 框架提供API,使用编程方式进行权限控制(不建议使用)
shiro框架执行流程:
Application Code:应用程序代码,由开发人员负责开发
Suubject:当前用户
SecurityManager:安全管理器,管理多有的用户,认证,授权等
Realm:安全数据桥,类似于Dao,负责访问安全数据
在项目中使用shiro框架
1.导入shiro的jar到项目中
2.在web.xml中配置一个过滤器代理对象,在项目启动spring工厂中加载一个和当前过滤器name同名的bean对象
3.在pring配置文件中配置一个名称为shiroFilter的bean4.修改UserAction的login登录访问,使用shiro框架提供的方式进行认证操作
5.自定义一个Realm,进行认证和授权操作
认证:系统提供的用于识别用户身份的功能 你是谁?
授权:系统中提供很多功能,需要为不同用户根据其对应的权限,授予用户操作某些功能的能力 你能做什么?
6.在spring配置文件中注册上面的realm,并注入给安全管理器
7.在自定义的realm中进行授权操作