Java에서 SpringSecurity 암호 오류로 사용자를 5차례 잠그는 방법
Spring Security는 Spring 기반의 기업 응용 시스템에 성명식 보안 액세스 제어 솔루션을 제공할 수 있는 보안 프레임워크입니다.이것은 Spring 응용 상하문에 설정할 수 있는 Bean을 제공하여 Spring IoC, DI(반전 Inversion of Control, DI:Dependency Injection 의존 주입)와 AOP(절면 프로그래밍) 기능을 충분히 활용하고 응용 시스템에 성명식의 안전 방문 제어 기능을 제공하여 기업 시스템의 안전 제어를 위해 대량의 중복 코드를 작성하는 작업을 감소시켰다.
다음은 인스턴스 코드입니다.
1단계: 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);
}
}
2단계: 새 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);
}
}
}
}
3단계: 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);
}
4단계: 데이터베이스에 로그인 횟수 필드 추가
<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'));
위에서 설명한 것은 자바에서 Spring Security 암호 오류로 사용자를 5차례 잠그는 방법입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주시면 제때에 답장해 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.