概述
Spring Security简介
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
下面看下实例代码:
第一步:创建 AuthenticationSuccessEventListener.Java 用来处理登录成功的事件。
package com.dcits.yft.auth;
import com.dcits.yft.system.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 登陆成功监听
*
* @author Shaoj 3/2/2017.
*/
@Component
public class AuthenticationSuccessEventListener implements ApplicationListener {
@Autowired
private UserDao userDao;
@Override
public void onApplicationEvent(AuthenticationSuccessEvent authenticationSuccessEvent) {
YftUserDetails yftUserDetails = (YftUserDetails) authenticationSuccessEvent.getAuthentication().getPrincipal();
String account = yftUserDetails.getUsername();
Map user = userDao.queryUserByAccount(account);
userDao.updateStatusByAccount(account,user.get("ENABLE").toString(),0);
}
}
第二步:新建AuthenticationFailureListener.java 用来处理登录失败的事件。
package com.dcits.yft.auth;
import com.dcits.yft.system.dao.ParamsDao;
import com.dcits.yft.system.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AuthenticationFailureBadCredentialsEvent;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 登陆失败监听
*
* @author Shaoj 3/2/2017.
*/
@Component
public class AuthenticationFailureListener implements ApplicationListener {
@Autowired
private UserDao userDao;
@Autowired
private ParamsDao paramsDao;
@Override
public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent authenticationFailureBadCredentialsEvent) {
String account = authenticationFailureBadCredentialsEvent.getAuthentication().getPrincipal().toString();
Map user = userDao.queryUserByAccount(account);
if (user != null) {
// 用户失败次数
int fails = Integer.parseInt(user.get("FAILS").toString());
fails++;
// 系统配置失败次数
int FAILS_COUNT = Integer.parseInt(paramsDao.queryParamsValue("FAILS_COUNT"));
// 超出失败次数,停用账户
if (fails >= FAILS_COUNT) {
userDao.updateStatusByAccount(account,"false",fails);
// 失败次数++
} else {
userDao.updateStatusByAccount(account,fails);
}
}
}
}
第三步:在UserDao.java中加入登录状态更新的代码
/**
* 更新用户登录次数
*
* @param account 账户
* @param login_counts 登录次数
* @return
*/
public void updateLoginCounts(String account) {
daoUtil.update("update t_yft_user set login_counts = login_counts + 1 where account = ?",account);
}
alter table T_YFT_USER add (FAILS number(11) default 0 );
comment on column T_YFT_USER.FAILS is '失败尝试次数';
[sql] view plain copy
INSERT INTO t_yft_params (ID,CODE,NAME,VALUE,UNIT,REMARK,CRT_DATE)
VALUES (66,'FAILS_COUNT','登陆尝试次数','5','',to_date('2017-03-02','yyyy-mm-dd'));
以上所述是小编给大家介绍的Java中SpringSecurity密码错误5次锁定用户的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
最后
以上就是勤奋期待为你收集整理的java输错三次密码代码_Java中SpringSecurity密码错误5次锁定用户的实现方法的全部内容,希望文章能够帮你解决java输错三次密码代码_Java中SpringSecurity密码错误5次锁定用户的实现方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复