很多网站的用户登录,从安全上考虑.不仅需要输入用户名和密码,而且也需要输入"验证码",何为验证码这里不着解释,网上也有很多说明.下面给出在Acegi框架下的实现验证码功能的主要代码.
一.新建AuthenticationProcessingFilter 类
java 代码
- import net.sf.acegisecurity.Authentication;
- import net.sf.acegisecurity.AuthenticationException;
- import net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter;
- import javax.servlet.http.HttpServletRequest;
- import ... ...
-
- public class ValidationCodeFilter extends AuthenticationProcessingFilter {
- public Authentication attemptAuthentication(HttpServletRequest httpServletRequest) throws AuthenticationException{
- String inputValidationCode = httpServletRequest.getParameter( "j_validation_code" );
-
- String ssnValidationCode = (String)httpServletRequest.getSession().getAttribute( VALIDATION_CODE );
-
- if( ssnValidationCode != null && !ssnValidationCode.equals( inputValidationCode ) ){
-
- throw new ValidationCodeException( "验证码输入错误!");
- }
-
- return super.attemptAuthentication( httpServletRequest ) ;
- }
- }
二.新建异常类ValidationCodeException
java 代码
- import net.sf.acegisecurity.AuthenticationException;
-
-
-
-
- public class ValidationCodeException extends AuthenticationException {
- public ValidationCodeException(String s) {
- super(s);
- }
- }
三.修改Acegi配置文件
- <bean id="authenticationProcessingFilter" class="xxx.xxx.ValidationCodeFilter">
- <property name="authenticationManager"><ref local="authenticationManager"/>property>
- <property name="authenticationFailureUrl"><value>/loginFailure.htmlvalue>property>
- <property name="defaultTargetUrl"><value>/welcome.htmlvalue>property>
- <property name="filterProcessesUrl"><value>/j_security_checkvalue>property>
- bean>
xml 代码
分享到:
相关推荐
在`YourUserDetailsService`中,你需要实现`UserDetailsService`接口,提供一个方法`loadUserByUsername(String username)`,该方法会由Acegi在认证过程中调用,用于查找指定用户名的用户信息。 最后,为了使Basic...
详细描述了acegi的验证码功能如何使用
Acegi Security框架的强大之处在于它的灵活性和扩展性。开发者可以在不改变业务逻辑的情况下,通过配置实现复杂的权限管理。尽管现在Spring Security已经成为更推荐的安全解决方案,但Acegi在早期对Spring应用的安全...
### 基于Spring的Acegi安全框架认证与授权的分析及扩展 #### 1. Acegi安全框架的概述 Acegi(后更名为Spring Security)是Spring框架中的一个子项目,专注于提供强大的安全功能,包括认证、授权以及保护web应用...
一个使用Acegi身份认证框架的笔记 可以节省你的时间 方便快速学会使用
- **身份验证(Authentication)**:Acegi 提供了多种身份验证机制,如基于密码的认证、LDAP认证等,确保只有合法用户能够访问系统资源。 - **授权(Authorization)**:Acegi 提供细粒度的权限控制,允许开发者...
### Acegi认证服务详解 #### 一、Acegi简介与背景 Acegi是Spring Security的前身,是一款基于Spring框架的安全管理工具,旨在为应用程序提供安全控制功能,包括身份验证(Authentication)和授权(Authorization)...
Acegi Security的优势在于其灵活性和可扩展性,它不仅能够与Spring框架无缝集成,还能够适应各种各样的认证需求,无论是标准的协议还是特定的商业解决方案。此外,Acegi Security提供的特性如“记住我”功能和“Run-...
acegi security实践教程—简单定制logoutFilter 这个demo是在原来的基础上,定制自己的logoutFilter,具体详细的博客地址介绍如下: http://blog.csdn.net/yuebinghaoyuan/article/details/21075929
标题中的“acegi 例子进行了扩展”意味着这个示例不仅包含了Acegi Security的基本功能,还可能包含了一些额外的定制或增强,比如自定义认证策略、更复杂的授权规则或者与其他系统的集成。这样的扩展有助于开发者深入...
Acegi安全框架简介及实用扩展,spring acegi 权限管理
4. **实现认证和授权逻辑**:根据应用需求,实现自定义的认证和授权类,这些类通常会扩展Acegi提供的基础类。 5. **测试和调试**:在实际运行环境中测试安全功能,确保用户权限设置正确,并使用Acegi提供的日志和...
Acegi还提供了丰富的接口和类,允许开发者自定义认证和授权流程,例如创建自定义的`UserDetailsService`来从数据源加载用户信息,或者实现自定义的`AuthenticationProvider`以支持特定的认证逻辑。 尽管Spring ...
Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for ...通过这个例子详细介绍如何配置Acegi的各个组件,同时介绍如何扩展Acegi 使其能够从数据库中读取配置信息。
学习acegi的第一步, <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> PATTERN_TYPE_APACHE_ANT /**=httpSessionContextIntegrationFilter,basicProcessingFilter,...
Acegi支持多种身份认证方式,包括但不限于基于数据库和LDAP的身份认证。这些方法使得开发人员可以根据实际需求选择最合适的认证方案,例如: - **数据库认证**:通过查询关系型数据库中的用户表来验证用户的登录...
Acegi提供了灵活的认证模型,允许开发者根据需求选择不同的认证策略。例如,可以通过HTTP基本认证、LDAP集成、CAS单点登录服务或者自定义的认证机制来验证用户身份。 5. **Acegi Security的授权简述** 在授权方面...
这是基于acegi框架实现的form认证的具体demo,详细的教程可以参考博客地址:http://blog.csdn.net/yuebinghaoyuan/article/details/20001111
开发者可以通过自定义认证提供者来扩展这些机制。 2. **授权**:授权决定了哪些用户或角色可以访问特定的资源或执行特定的操作。Acegi允许通过定义安全表达式、访问决策管理器和访问决策投票器来进行细粒度的授权...
- **AOP实现**:通过面向切面编程技术,Acegi能够与业务逻辑分离,提高系统的可维护性和扩展性。 - **高度灵活性**:支持多种认证方式,且强大的ACL权限控制能力,适用于复杂的权限管理体系。 - **兼容性**:既适用...