Acegi Security 学习

acegisecurity内所有jar acegi-security-1.0.7.jaracegi-security-1.0.7-sources.jaracegi-security-cas-1.0.7.jaracegi-security-cas-1.0.7-sources.jaracegi-security-catalina-1.0.7.jaracegi-security-catalina-1.0.7-sources.jaracegi-security-jboss-1.0.7.jaracegi-security-jboss-1.0.7-sources.jaracegi-security-jetty-1.0.7.jaracegi-security-jetty-1.0.7-sources.jaracegi-security-resin-1.0.7.jaracegi-security-resin-1.0.7-sources.jaracegi-security-samples-contacts-1.0.7-sources.jaracegi-security-samples-tutorial-1.0.7-sources.jar,acegi-security-tiger-1.0.7.jar,acegi-security-tiger-1.0.7-sources.jarjar 立即下载

最近刚弄了acegi的一本书,学习了下怎么将这一权限控制框架集成到我们的日常使用的web程序中去:),Let`s Go!
什么是acegi?
Acegi Security 是用于企业 Web 应用程序的一个强大、灵活的安全性解决方案。Acegi 构建在 Java EE 的声明式安全性方法之上,并将 URL 和业务方法许可扩展至任意 Java 对象。Acegi Security 为应用程序提供全面的身份验证、授权、基于实例的访问控制、通道安全和用户验证功能。
如何在现有框架中集成acegi
看了这么牛的介绍,我们要怎么将acegi和我们现有系统进行集成呢?
下面以小弟自己弄得一个springMVC框架为例,看看如何一步一步来集成acegi
第一步:JAR包
   一如既往,麻烦的jar包(在使用mvn之前我一直为这个很头疼,无止境的冲突),这里我使用的0.9.0版的acegi-security
     <dependency>
     <groupId>org.acegisecurity</groupId>
     <artifactId>acegi-security</artifactId>
     <version>0.9.0</version>
  </dependency>
  如果你不是使用的mvn,没关系,去下载一个好了。http://sourceforge.net/projects/acegisecurity/files/
第二部:配置
  如果你不需要特殊的权限配置,基本上来说,配置就是你使用acegi的全部了:),让我们来看看怎么配置吧。
  beans-acegi-security.xml这个是我配置的acegi信息,大家可以看到已经和Spring集成了.

18个类的定义就支撑起了我们的acegi安全框架,不得不赞叹下acegi的牛人啊!
简单说明下,如果需要更加具体的说明可以google,也可以去看下http://www.springside.org.cn/docs/reference/Acegi3.htm这里介绍得比较详细,不像兰色说不清楚,嘿嘿!

filterChainProxy:是通过一个标准的FilterInvocationDefinitionSource 来实现配置的,在这个类下面有filterInvocationDefinitionSource配置项目,里面定义了一个过滤器的链,这决定了我们在页面上进行的任何一次请求均会经过这个过滤器链中所有过滤器的处理:)我定义的链比较简单,就是用了httpSessionContextIntegrationFilter、authenticationProcessingFilter、anonymousProcessingFilter、securityEnforcementFilter四个过滤器,还有很多acegi过滤器就不一一列出了,有兴趣的同学可以自己去参考一下其他网络资料或者书籍进行学习哦!
httpSessionContextIntegrationFilter:在多个请求之间共享SecurityContext,如果存在则必须放在过滤器链的第一位。用户认证后负责从Session中获取用户关联的SecurityContext存放到SecurityContextHolder,每个请求都会有SecurityContextHolder用来保存着SecurityContext,而SecurityContext又保存了包含acegi认证重要信息的Authentication对象。
authenticationProcessingFilter:使用认证处理过滤器处理匹配的URL,这里定义你的登录页面,成功跳转页面和失败页面,还可以设置是否需要记录登录状态等。
anonymousProcessingFilter:匿名用户处理。如果用户尚未登录,将生成一个匿名用户的Authentication存放到SecurityContext中
securityEnforcementFilter:强制安全验证过滤器。验证所请求的url是否在用户的权限范围内

第二部:数据库绑定
  

 上面的配置中,我们设置了认证数据是由数据库提供的,并且启用了MD5对密码进行加密和缓存,然后我们还可以看到两条sql语句。
  SELECT loginName as username,password,status as enabled FROM t_users WHERE loginName=? and status=1
  SELECT loginName as username,authority FROM t_users WHERE loginName=? and status=1
  这个是最基本的acegi的认证方式,需要提供的内容有
      用户信息:包括username(用户名),password(密码),enabled(开启状态)
      认证信息:包括username(登陆名),authority(认证级别)
      (上面的英文列名如果不扩展的话必须是一样的哦,如果你当前数据库中的字段名称不一样,请用as语句转换一下才能用)
  这个时候acegi就知道数据库中我们的用户信息及权限级别了:)

第三步 那acegi怎么控制用户访问呢?
  

  哈,上面的就是最基本的acegi的认证投票了,我们定义了一个反问URL角色过滤器用来告诉acegi访问url时候需要使用什么角色,用了一个投票器告诉acegi处理访问用户需要使用默认的ROLE_开头,从配置总我们可以看到两种角色ROLE_ANONYMOUS、ROLE_USER,对应authority(认证级别)中存放的内容哦,还有一种ROLE_ANONYMOUS,这个是默认任何人都可以访问的。

第四步 都配好了,怎么登陆?
  

 哈哈,有很多url页面了!
 filterProcessesUrl:用于认证的action
 defaultTargetUrl投票认证成功后跳转页面
 authenticationFailureUrl:投票认证失败后跳转页面
 loginFormUrl:认证失效用户重定向到登陆的表单url
 现在页面url也配置好了,让我们再看看登陆页面里面有什么呢?
    <form action="user_login.htm" method="post">
     <table border="1px" cellpadding="1" cellspacing="1" style="text-align: center">
   #if($errMsg)
  <tr>
       <td colspan="3"><style color="red">$errMsg</style></td>
      </tr>
   #end
      <tr>
       <td>用户名:</td>
       <td><input type="text" name="j_username"></td>
       <td>&nbsp;</td>
      </tr>
      <tr>
       <td>密  码:</td>
       <td><input type="password" name="j_password"></td>
       <td>&nbsp;</td>
      </tr><tr>
       <td>&nbsp;</td>
       <td><input id="submit" type="submit" value="登录" name="submit" />
   &nbsp;&nbsp;&nbsp;&nbsp;<input id="submit" type="button" value="注册" name="register" onClick="location.href='register.htm'"/></td>
       <td>&nbsp;</td>
      </tr>
     </table>
    </form>
  一个form就搞定了,action是刚才我们配置的地址,用户名和用户密码是默认的j_username,j_password这样就可以完成我们的登录了,大家可以是尝试一下哦!

 

 

 

 

Acegi框架介绍 原文网址:http://www.oschina.net/question/12_8396 概述     对于任何一个完整的应用系 统,完善的认证和授权机制是必不可少的。Acegi Security(以下简称Acegi)是一个能为基于Spring的企业应用提供强大而灵活安全访问控制解决方案的框架,Acegi已经成为 Spring官方的一个子项目,所以也称为Spring Security。它通过 阅读详情

相关推荐

学习Acegi-认证(authentication)

最近两星期在学习acegi,过程中感谢[url=www.iteye.com]JavaEye[/url],[url=www.springside.org.cn]SpringSide[/url]和在网上提供acegi学习心得的网友们。 为了加深自己的认识,准备写下一些DEMO,希望可以给准备学习acegi的同学一些帮助。 作为安全服务离不开认证和授权这两个主要组成部分。而这...

用技术点燃生命 508

acegi security实践教程—定制userDetailsService

前面我们都是使用默认的UserDetailsService,无论是使用InMemoryDaoImpl还是JdbcDaoImpl这种形式。那这篇文章给大家讲解如何自定义userDetailsService,正如咱们前面写过自己的logoutFilter类。 源码讲解 UserDetailsService是个对用户信息操作的接口,其中只有一个方法UserDetails loadUserByUs...

dawuafang 357

Acegi Security -- Spring下最优秀的安全系统

Acegi安全系统的配置       Acegi 的配置看起来非常复杂,但事实上在实际项目的安全应用中我们并不需要那么多功能,清楚的了解Acegi配置中各项的功能,有助于我们灵活的运用Acegi于实践中。 2.1 在Web.xml中的配置 1)  FilterToBeanProxy Acegi通过实现了Filter接口的 FilterToBeanProxy提供一种特殊的使用Serv

ArmandXu的专栏 2439

spring-security acegi 学习计划

spring-security acegi 。。。。。 啥也没有,正在学习中。

foxox 420

Spring Security Acegi 学习之路三

  身份认证管理     使用Acegi保护应用程序的第一步是根据用户提供的认证信息进行身份认证,以确定用户的身份获取对应的权限信息准备好Authentication。通过认证的Authentication拥有权限信息,它是Acegi进行后续安全对象访问安全控制的依据。   基于内存存储用户信息的身份认证   applicationContext-acegi-plugin.xml ...

ccd1010的博客 235

Spring Security Acegi 学习之路四

  安全对象访问控制          Acegi分别通过Servlet过滤器和方法拦截器对URL资源和业务方法进行访问拦截,向授权用户开放访问请求拒绝未授权用户的访问。   匿名用户权限信息          Acegi引入了一个匿名用户权限的概念,匿名用户权限定义了未登录用户所能访问到的程序资源,这些资源括站点首页、登录页面、静态资源共享等。Acegi为匿名用户认证提供了三...

ccd1010的博客 288

Acegi Security System学习

一 可以为如下任务配置ACEGI安全过滤器: 在访问一个安全资源之前提示用户登录。 通过检查安全标记(如密码),对用户进行身份验证。 检查经过身份验证的用户是否具有访问某个安全资源的特权。 将成功进行身份验证和授权的用户重定向到所请求的安全资源。 对不具备访问安...

weixin_34392435的博客 198

Spring Security Acegi 学习之路一

概述        Acegi Security(以下简称Acegi)是一个能为基于Spring的企业应用提供强大而灵活安全访问控制解决方案的框架,Acegi已经成为Spring官方的一个子项目,所以也称为Spring Security。它通过在Spring容器中配置一组Bean,充分利用Spring的IoC和AOP功能,提供声明式安全访问控制的功能。虽然,现在Acegi也可以应用到非Spri...

ccd1010的博客 211

acegi-security 学习笔记

acegi security 是基于spring framework 开源安全解决方案。按自己的理解,其功能主要是提供了一个WEB应用安全解决方案框架。并提供了一些缺省的实现。所以,如果我们的应用中需要引入这套解决方案的话,可以根据自己的应用需求进行相应的扩充。另外,由于acegi security 是基于spring framework 的,所以可以和现有的基于spring framework

soleghost的专栏 4855

Spring Security Acegi 学习之路三 (转)

身份认证管理     使用 Acegi 保护应用程序的第一步是根据用户提供的认证信息进行身份认证,以确定用户的身份获取对应的权限信息准备好 Authentication 。通过认证的 Authentication 拥有权限信息,它是 Acegi 进行后续安全对象访问安全控制的依据。   基于内存存储用户信息的身份认证 ...

My study notes 268

acegi2.0的学习——Spring Security

原文地址:http://everlive.iteye.com/blog/205696     今天看到appfuse2.0.2里acegi的配置文件非常奇怪,到appfuse官网查看原来将appfuse2.0.2含的acegi1.0升级到了acegi2.0 ,同1.0比起变化很大,名称也改为spring security2.0.下面是简单配置使用步骤

大头客的专栏 653

Spring Security Acegi 学习之路二

Acegi 集成到Web应用程序中     Acegi通过多个不同用途的Servlet过滤器截取HTTP请求实施访问安全的控制。按照传统的方式,我们应用在web.xml配置文件中通过&lt;filter&gt;定义Servlet过滤器并使用&lt;filter-mapping&gt;元素定义过滤器对应的URL 匹配模式。     代理Acegi的过滤...

ccd1010的博客 180

Spring Security Acegi 学习之路一 (转)

概述        Acegi Security(以下简称Acegi)是一个能为基于Spring的企业应用提供强大而灵活安全访问控制解决方案的框架,Acegi已经成为 Spring官方的一个子项目,所以也称为Spring Security。它通过在Spring容器中配置一组Bean,充分利用Spring的IoC和AOP功能,提供声明式安全访问控制的功能。虽然,现在 ...

My study notes 159

学习acegi-security (转载)

学习acegi-security 这几天对acegi研究了一下,现对这几天的研究做个总结。 网上资料对于acegi在web上的应用非常多,所以特意不从web入手,而从一般的java方法入手。 acegi的基本原理就是利用拦截器,对请求进行拦截,在拦截前和拦截后做些安全验证,以达到安全目的。所谓安全,一般括两个部分,一为认证(authentication),二为授权(authori...

amwayy的专栏 178

Spring Security Acegi 学习之路四 (转)

安全对象访问控制          Acegi 分别通过 Servlet 过滤器和方法拦截器对 URL 资源和业务方法进行访问拦截,向授权用户开放访问请求拒绝未授权用户的访问。   匿名用户权限信息          Acegi 引入了一个匿名用户权限的概念,匿名用户权限定义了未登录用户所能访问到的程序资源,这些资源括站...

My study notes 138

Spring Security Acegi 学习之路二(转)

Acegi 集成到 Web 应用程序中     Acegi 通过多个不同用途的 Servlet 过滤器截取 HTTP 请求实施访问安全的控制。按照传统的方式,我们应用在 web.xml 配置文件中通过 ...

My study notes 144
上一篇: IT人员必不可少的十大软技能
下一篇: JAVA 常用加密方法
jlh2
博客等级 码龄21年 27粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值