`
backbase
  • 浏览: 91483 次
  • 性别: Icon_minigender_1
  • 来自: 虾汤水库
社区版块
存档分类
最新评论

acegi 登录验证 错误信息 提示

阅读更多

1:需求:客户使用用户名、密码登录,根据不同的错误类型,在页面提示相应的错误信息

 

    (一) 同一帐号IP或者密码450内3次登录,提示:请450秒后再进行登录

 

   (二) 450内登录失败大于等于3次登录,提示:帐号被设为冻结

 

    (三) 450秒内密码连续3次错误,提示:帐号禁止15分钟内再登录 .............

 

2:采用技术:acegi-security-1.0.7.jar

 

3:问题描述: (一) 如何将acegi登录认证的错误信息,输出给用户。

 

4:参考的资料:http://jiwenke.iteye.com/blog/112979

 

5:解决方案:采用Acegi提供的异常来处理。

 

6:核心步骤:

 

(一)新建一个自己的类如(XXAuthenticationProcessingFilter)继承acegi的类org.acegisecurity.ui.webapp.AuthenticationProcessingFilter,同时覆盖父类的3个方法, 关键是覆盖父类的protected void unsuccessfulAuthentication(HttpServletRequest request,HttpServletResponse response, AuthenticationException failed)方法 。。。。。。。。。 String validMessage = failed.getMessage(); //provider处理中抛出的异常,供web页面处理提示信息 logger.info("登录验证出现异常,原因: " + validMessage); SecurityContextHolder.getContext().setAuthentication(null); String failureUrl = getExceptionMappings().getProperty(failed.getClass().getName(), getAuthenticationFailureUrl()); failureUrl += "&validMessage=" + validMessage; // 已参数的形式传递给前端页面 如:xxxx/login.jsp?login_error=1&validMessage=3 。。。。。。。。 补充:XXAuthenticationProcessingFilter类的具体实现参考附件

 

(二) 修改acegi的配置文件 applicationContext-acegi-security.xml,将authenticationProcessingFilter修改为自己的处理类 <bean id="authenticationProcessingFilter" class="xxx.xxx.xxx.filter.XXAuthenticationProcessingFilter"><property name="authenticationManager">

<ref bean="authenticationManager"></ref>

</property><property name="authenticationFailureUrl"><value>/login.jsp?login_error=1</value></property>

//验证出错跳转的路径己参数

<property name="defaultTargetUrl"><value>/</value></property>

<property name="filterProcessesUrl"><value>/j_acegi_security_check</value></property>

<property name="rememberMeServices"><ref local="rememberMeServices"></ref>

</property><property name="alwaysUseDefaultTargetUrl"><value>false</value></property>

</bean>

 

 

(三) authenticationManager中的provider的配置

<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">

<property name="providers"><list><ref local="memberCardDaoAuthenticationProvider"></ref>

//该provider从数据库中查询用户名、密码进行验证

<ref local="rememberMeAuthenticationProvider"></ref>

<ref local="anonymousAuthenticationProvider"></ref></list>

</property>

</bean>

 

(四)memberCardDaoAuthenticationProvider的p配置

<bean id="memberCardDaoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">

<property name="userDetailsService"><ref local="memberCardJdbcImpl"></ref></property>

<property name="userCache"><ref local="userCache"></ref></property>

<property name="passwordEncoder"><ref local="cardPasswordEncoder"></ref></property>

</bean>

 

(五) memberCardJdbcImpl的配置

<bean id="memberCardJdbcImpl" class="com.milesup.acegi.userdetails.jdbc.MemberCardJdbcImpl">

<property name="dataSource"><ref bean="dataSource"></ref></property>

<property name="loginLogService"><ref bean="loginLogService"></ref></property>

/MemberCardJdbcImpl具体处理验证的类需要注入的service

<property name="rolePrefix"><value>ROLE_</value></property>

</bean>

 

补充:MemberCardJdbcImpl继承了org.acegisecurity.userdetails.jdbc.JdbcDaoImpl类,同时覆盖该类的 public UserDetails loadUserByUsername(String userInfo) throws ValidateException 在该方法中真正实现数据库用户名、密码进行验证 注意:该方法抛出来一个自定义的异常类,该类继承了org.acegisecurity.AuthenticationException,用于抛出异常XXAuthenticationProcessingFilter类中方法unsuccessfulAuthentication 要处理的异常,详细参考附件XXAuthenticationProcessingFilter类的详细信息。 7: 页面处理 $(document).ready(function(){ if (${param.login_error == 1}) { if (${param.validMessage == 2}){ $('#error_id').html('登录失败:同一帐IP或者密码450内3次登录,请8分钟后再进行登录'); } else if (${param.validMessage == 3}){ $('#error_id').html('登录失败:450内登录失败大于等于3次登录,帐号被设为冻结'); } else if (${param.validMessage == 4}){ $('#error_id').html('登录失败:450秒内密码连续3次错误,15分钟内禁止登录'); } else if (${param.validMessage == 5}){ $('#error_id').html('登录失败:15分钟内禁止登录'); } else if (${param.validMessage == 6}){ $('#error_id').html('登录失败:用户名、密码、号码类型不正确'); } } });

 

 

总结:以上是这两天工作中接触acegi处理的问题,主要提供给自己一个回忆的纪要,如果写得不好误导了来访的朋友或者耽误了您的时间,敬请谅解。 排版太难看了,有时间再来整过。。。。。。

分享到:
评论

相关推荐

    基于Acegi的Form表单验证的例子

    例如,你可以开启`DebugFilter`,它会在页面底部显示有用的调试信息。 7. **子文件`AcegiDemo14`**:这个文件很可能是项目的一个组成部分,可能包含示例的代码结构,如控制器、服务、DAO以及Acegi的配置文件。通过...

    使用acegi控制用户权限实例

    6. **异常处理**:当访问控制失败时,Acegi Security会抛出相应的异常,你可以自定义异常处理器来处理这些异常,如重定向到错误页面或显示定制的错误信息。 7. **与Spring集成**:作为Spring的扩展,Acegi Security...

    Acegi_db1.rar_acegi

    6. **异常处理**:当安全规则不满足时,Acegi会抛出异常,开发者可以自定义这些异常的处理逻辑,如重定向到错误页面或显示错误消息。 压缩包内的"www.pudn.com.txt"可能是一个包含链接或其他信息的文本文件,指向更...

    acegi应用安全J2EE安全

    5. **异常处理(Exception Handling)**:当安全规则不被满足时,Acegi Security会抛出相应的异常,这些异常可以被捕获并进行自定义处理,如重定向到登录页面或显示错误信息。 6. **与Spring的集成**:Acegi ...

    基于rbac模式的acegi权限管理

    在实际项目中,为了提高用户体验,我们还需要考虑如何处理权限不足的情况,比如显示友好的错误信息,或者重定向到登录页面。同时,对于多租户环境,可能还需要实现动态的角色和权限分配,使得管理员可以根据用户或...

    acegi-security-tiger-1.0.0-RC2.jar.zip

    5. **异常处理**:能够统一处理安全相关的异常,如未认证、未授权等,提供定制化的错误提示。 6. **自定义扩展**:开发者可以根据需求自定义认证和授权策略,增强了框架的灵活性。 7. **兼容性**:"tiger"指的是...

    ssm框架登录验证、增删改查

    - **视图渲染**:登录验证的错误信息会展示在JSP页面上,通常通过EL(Expression Language)和JSTL标签库来显示。 - **用户交互**:JSP页面负责与用户交互,提供登录表单,显示操作结果,以及CRUD操作后的反馈信息...

    acegisecurity-1.0.7.zip_.acegisecuri_acegi security 1.0.7_acegi

    6. **国际化支持**:Acegi Security 1.0.7版本也支持多语言环境,允许错误消息和提示信息根据用户的语言设置进行本地化。 7. **API与配置**:Acegi Security提供了一套全面的API和XML配置,使得开发者可以精细控制...

    Acegi(Spring Security2.0)的PPT

    Acegi还支持会话管理,它会在服务器端存储用户的身份验证信息,并在客户端设置安全cookie,以便在后续请求中自动进行身份验证,无需用户反复登录。同时,当用户退出系统时,Acegi会清除相关的服务器端会话对象,确保...

    acegi实例

    你可以自定义异常处理器来决定如何处理这些异常,例如重定向到错误页面或显示友好的错误消息。 8. **状态管理**:Acegi支持基于session和无状态的会话管理。基于session的管理方式将用户的认证信息存储在服务器的...

    实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.rar

    6. **异常处理**:当安全检查失败时,Acegi会抛出相应的安全异常,开发者可以自定义这些异常的处理方式,如重定向到错误页面或显示定制的错误信息。 7. **记住我(Remember Me)服务**:Acegi提供了“记住我”功能...

    springside 玩转acegi

    你可以自定义处理逻辑,比如显示错误页面或重定向到登录页面。 在SpringSide项目中,`applicationContext-acegi-security.xml`的配置是项目安全架构的基础,通过精细配置,我们可以实现对用户身份的验证、权限的...

    acegi保护业务方法_basedDatabase

    你可以定义自定义的异常处理机制,以友好地显示错误信息或重定向至登录页面。 8. **测试与调试**:在实际应用中,要对不同的角色和权限进行充分的测试,确保安全策略按预期工作。 总的来说,"acegi保护业务方法_...

    实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.pdf

    用户提交的身份验证信息会经过认证Provider处理,一旦认证成功,Acegi会在SecurityContextHolder中设置一个SecurityContext对象,存储用户信息。 3. **授权机制**: 授权涉及决定用户是否有权访问特定资源。Acegi...

    acegi-security-catalina-0.9.0.jar.zip

    4. **异常处理**:当安全检查失败时,Acegi Security可以自定义异常处理逻辑,提供友好的错误提示。 5. **登录和注销界面**:Acegi Security提供了默认的登录和注销界面,同时允许开发者根据项目需求进行定制。 6....

    Spring源代码解析(九):Spring_Acegi框架鉴权的实现.doc

    在`attemptAuthentication`方法中,如果认证失败,将会调用`unsuccessfulAuthentication`方法,该方法可能包含向用户显示错误消息或者重定向到登录页面的操作。相反,如果认证成功,`AuthenticationProcessingFilter...

    例子源码Acegi2 带jar +tld 完整版 下载

    如果用户未经过认证或无权访问资源,Acegi2会触发相应的处理,如重定向到登录页面或返回错误信息。 4. **Access Decision Manager (ADM)**:负责做出是否允许访问的决策。它可以配置为使用多数投票、优先级排序等...

    使用 Acegi 保护 Java 应用程序: 续一

    你可以定制这些异常的处理逻辑,如重定向到错误页面或显示自定义错误消息。 8. **测试与调试**:Acegi 提供了 `TestSecurityContextHolderStrategy` 用于单元测试,以及 `debug` 属性来开启详细的日志输出,帮助...

    Spring ACEGI手册(部份)

    6. **国际化支持**: 提供多语言的安全提示和错误消息。 **使用流程** 1. **配置安全上下文**: 配置安全管理器,包括认证提供者和访问决策策略。 2. **定义安全拦截规则**: 在Web应用中,使用`&lt;http&gt;`元素配置过滤...

    grails-acegi-0.1.zip

    4. 安全异常处理:当用户试图访问无权访问的资源时,插件会抛出异常,你可以自定义异常处理器,提供友好的错误提示。 5. 安全审计:插件还提供了安全事件日志功能,可以记录用户的登录、注销、权限变更等操作,便于...

Global site tag (gtag.js) - Google Analytics