Spring Security3.1权限管理

前言

要使用Spring Sercurity3.1框架,只需要在官网上去下载http://www.springsource.org/spring-community-download Spring Security包,里面有两个例子程序,把其中一个例子程序中的Lib里面的包考到自己的项目中就可以开发了。在这个包倒入的时候可能会遇到一些麻烦,比如包冲突,解决办法就是把包名相同版本不同的删掉一个就可以了。

原理

权限管理一般涉及到用户、角色、资源这三者之间的关系,当用户请求某个资源时,先判断该用户的角色,然后判断请求资源所需的角色,最后把用户角色和资源角色作比较,如果相等,说明该用户拥有访问该资源的权限,如果用户角色用没有一个和该资源角色相等,说明该用户没有访问该资源的权限。Spring Sercurity3.1框架实现权限管理也是这个原理,当我们项目编译时,Spring Security会自动的启动它的过滤器把我们数据库中的用户和角色加载出来。

概述

Spring Sercurity要从数据库中获取用户、权限、资源来实现权限管理,需要自定义过滤器,并且该过滤器必须在spring Security执行FILTER_SECURITY_INTERCEPTOR过滤器之前执行,因为该框架实现权限管理实质就是在执行action之前先执行它框架中的为权限管理制定的一系列Fliter。

我们自定的这个SercurityFilter类要继承AbstractSecurityInterceptor 接口和Filter类(负责传递一系列的Filter),因为我们是从数据库中获取权限验证的数据,所以还要重写FilterInvocationSecurityMetadataSource 接口,AccessDecisionManager 接口,UserDetailsService 接口,只要重写了这3个接口,然后再spring配置文件中做相应的配置,项目启动启动后,我们进行资源请求,就自动会去执行我们重定义的类进行权限判断。

实现:

1.  web.xml代理配置

2.  SpringContext-Security配置

3.  自定义的类说明

自定义MySecurityFilter需要继承AbstractSecurityInteceptor拦截器和继承Filter类,因为它本身就是一个过滤器,如下图所示:

自定义MySecurityMetadataSource需要继承FilterInvovationSecurityMetadataSource,改类主要是程序启动的时候加载资源与角色的对应关系,存放在一个map中。

自定义MyUserDetailServiceImpl需要继承UserDetailsService,该类的作用是,当用户登录后,获取用户的权限。

 

MyAccessDecisionManager类需要继承AccessDecisionManager,改类的作用是判断用户与访问的资源所需的权限是否相等,实现是在decide函数里面。

总结:

我们一般进行权限管理时可以采用第三方框架,因为它已为我们实现了很强大的功能,控制的粒度可以随心所欲,除了java有Spring Sercurity框架,各门语言我想都有它的一套权限管理的框架,这样让我们更加专注于业务的实现,减少开发时间。Spring Security框架网上也有很多全面的讲解,我也是最近看了很多资料才明白其使用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值