Java에서 SpringSecurity 암호 오류로 사용자를 5차례 잠그는 방법

4456 단어 springsecurityjava
Spring Security 소개
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차례 잠그는 방법입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주시면 제때에 답장해 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기