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<AuthenticationSuccessEvent> {
@Autowired
private UserDao userDao;
@Override
public void onApplicationEvent(AuthenticationSuccessEvent authenticationSuccessEvent) {
YftUserDetails yftUserDetails = (YftUserDetails) authenticationSuccessEvent.getAuthentication().getPrincipal();
String account = yftUserDetails.getUsername();
Map<String, Object> 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<AuthenticationFailureBadCredentialsEvent> {
@Autowired
private UserDao userDao;
@Autowired
private ParamsDao paramsDao;
@Override
public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent authenticationFailureBadCredentialsEvent) {
String account = authenticationFailureBadCredentialsEvent.getAuthentication().getPrincipal().toString();
Map<String, Object> 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, user.get("ENABLE").toString(), 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);
}
第四步:数据库中添加登录次数字段
<span style="font-family: Arial, Helvetica, sans-serif;">alter table T_YFT_USER add (FAILS number(11) default 0 );</span>
<span style="font-family: Arial, Helvetica, sans-serif;">comment on column T_YFT_USER.FAILS is '失败尝试次数';</span>
[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次锁定用户的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# spring
# security
# 用户
# java
# springsecurity
# SpringBoot3整合SpringSecurity6添加用户、密码加密的方式
# SpringSecurity配置对应的账号密码访问
# 小编
# 访问控制
# 是一个
# 在此
# 给大家
# 充分利用
# 用户登录
# 第二步
# 数据库中
# 所述
# 给我留言
# 第三步
# 感谢大家
# 第四步
# 疑问请
# 有任何
# 减少了
# 系统配置
# AuthenticationSuccessEvent
# Component
相关文章:
如何在阿里云高效完成企业建站全流程?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
制作网站的模板软件,网站怎么建设?
如何在橙子建站上传落地页?操作指南详解
如何生成腾讯云建站专用兑换码?
制作门户网站的参考文献在哪,小说网站怎么建立?
ui设计制作网站有哪些,手机UI设计网址吗?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何选择适合PHP云建站的开源框架?
高防服务器如何保障网站安全无虞?
宝塔面板创建网站无法访问?如何快速排查修复?
动图在线制作网站有哪些,滑动动图图集怎么做?
网站制作网站,深圳做网站哪家比较好?
表情包在线制作网站免费,表情包怎么弄?
网站专业制作公司有哪些,做一个公司网站要多少钱?
魔方云NAT建站如何实现端口转发?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
PHP正则匹配日期和时间(时间戳转换)的实例代码
高防服务器:AI智能防御DDoS攻击与数据安全保障
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
建站之星logo尺寸如何设置最合适?
威客平台建站流程解析:高效搭建教程与设计优化方案
高防服务器租用指南:配置选择与快速部署攻略
宝塔新建站点为何无法访问?如何排查?
如何通过虚拟主机快速完成网站搭建?
临沂网站制作企业,临沂第三中学官方网站?
seo网站制作优化,网站SEO优化步骤有哪些?
制作公司内部网站有哪些,内网如何建网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
教程网站设计制作软件,怎么创建自己的一个网站?
如何通过FTP服务器快速搭建网站?
北京网站制作网页,网站升级改版需要多久?
做企业网站制作流程,企业网站制作基本流程有哪些?
建站之星下载版如何获取与安装?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
如何快速搭建高效简练网站?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何续费美橙建站之星域名及服务?
香港服务器租用每月最低只需15元?
如何在云主机上快速搭建多站点网站?
如何选择域名并搭建高效网站?
代购小票制作网站有哪些,购物小票的简要说明?
如何快速选择适合个人网站的云服务器配置?
网站制作员失业,怎样查看自己网站的注册者?
如何在云指建站中生成FTP站点?
b2c电商网站制作流程,b2c水平综合的电商平台?
*请认真填写需求信息,我们会在24小时内与您取得联系。