Spring Security笔记:登录尝试次数限制
2014-07-20 22:33
387 查看
今天在前面一节的基础之上,再增加一点新内容,默认情况下Spring Security不会对登录错误的尝试次数做限制,也就是说允许暴力尝试,这显然不够安全,下面的内容将带着大家一起学习如何限制登录尝试次数。
首先对之前创建的数据库表做点小调整
一、表结构调整
T_USERS增加了如下3个字段:
View Code
跟之前的变化有点大,47行是核心,为了实现47行的注入,需要33-38行,而为了完成authenticationProvider所需的一些property的注入,又需要其它bean的注入,所以看上去增加的内容就有点多了,但并不难理解。
五、运行效果
连续3次输错密码后,将看到下面的提示
这时如果查下数据库,会看到
错误尝试次数,在db中已经达到阀值3
而且该用户的“是否未锁定”字段值为0,如果要手动解锁,把该值恢复为1,并将T_USER_ATTEMPTS中的尝试次数,改到3以下即可。
源代码下载:SpringSecurity-Limit-Login-Attempts-XML.zip
参考文章:
Spring Security : limit login attempts example
首先对之前创建的数据库表做点小调整
一、表结构调整
T_USERS增加了如下3个字段:
<beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd"> <http auto-config="true" use-expressions="true"> <intercept-url pattern="/admin**" access="hasRole('ADMIN')" /> <!-- access denied page --> <access-denied-handler error-page="/403" /> <form-login login-page="/login" default-target-url="/welcome" authentication-failure-url="/login?error" username-parameter="username" password-parameter="password" /> <logout logout-success-url="/login?logout" /> <csrf /> </http> <beans:bean id="userDetailsDao" class="com.cnblogs.yjmyzz.dao.impl.UserDetailsDaoImpl"> <beans:property name="dataSource" ref="dataSource" /> </beans:bean> <beans:bean id="customUserDetailsService" class="com.cnblogs.yjmyzz.service.CustomUserDetailsService"> <beans:property name="usersByUsernameQuery" value="SELECT d_username username,d_password password, d_enabled enabled,d_accountnonexpired accountnonexpired,d_accountnonlocked accountnonlocked,d_credentialsnonexpired credentialsnonexpired FROM t_users WHERE d_username=?" /> <beans:property name="authoritiesByUsernameQuery" value="SELECT d_username username, d_role role FROM t_user_roles WHERE d_username=?" /> <beans:property name="dataSource" ref="dataSource" /> </beans:bean> <beans:bean id="authenticationProvider" class="com.cnblogs.yjmyzz.provider.LimitLoginAuthenticationProvider"> <beans:property name="passwordEncoder" ref="encoder" /> <beans:property name="userDetailsService" ref="customUserDetailsService" /> <beans:property name="userDetailsDao" ref="userDetailsDao" /> </beans:bean> <beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"> <beans:constructor-arg name="strength" value="9" /> </beans:bean> <authentication-manager> <authentication-provider ref="authenticationProvider" /> </authentication-manager> </beans:beans>
View Code
跟之前的变化有点大,47行是核心,为了实现47行的注入,需要33-38行,而为了完成authenticationProvider所需的一些property的注入,又需要其它bean的注入,所以看上去增加的内容就有点多了,但并不难理解。
五、运行效果
连续3次输错密码后,将看到下面的提示
这时如果查下数据库,会看到
错误尝试次数,在db中已经达到阀值3
而且该用户的“是否未锁定”字段值为0,如果要手动解锁,把该值恢复为1,并将T_USER_ATTEMPTS中的尝试次数,改到3以下即可。
源代码下载:SpringSecurity-Limit-Login-Attempts-XML.zip
参考文章:
Spring Security : limit login attempts example
相关文章推荐
- Linux下设置限制登录oracle数据库及Linux操作系统的IP、尝试登录次数及长时间空闲后断开
- redhat5.4的SSH限制登录密码尝试次数
- spring security实现限制登录次数功能
- spring security实现限制登录次数功能
- Shiro限制登录尝试次数
- Shiro security限制登录尝试次数
- 数据库安全管理——用户登录次数限制及锁定(这里指数据库用户)
- asp.net限制用户登录错误次数
- Android锁屏尝试次数太多导致需要google账户登录问题
- 限制SSH登录次数
- 【mobile】安卓图案解锁尝试次数过多导致 要解锁需要GOOGLE账户登录,解决方案
- perl脚本实现限制ssh最大登录次数(支持白名单)
- 限定登录失败次数,超过指定次数就限制登录一段时间
- 登录错误次数限制工具类
- 手机验证码 发送邮件 登录次数 限制
- win7利用组策略设置电脑开机登录密码次数限制技巧图解
- linux登录次数限制
- PL/SQL基础编程之(十)[SQL、EM创建用户、角色][授权、配置文件、限制登录次数锁定用户]
- 查看日志里root用户登录失败的ip尝试的次数
- 登录的次数及时间限制