Spring Security 는 데이터베이스 인증 및 사용자 암호 화 및 복호화 기능 을 사용 합 니 다.

흐름 도:

1.블 로 그 를 연결 합 니 다https://mp.csdn.net/console/editor/html/104576494환경 을 준비 합 니 다.
2.spring-security.xml 의 설정:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:security="http://www.springframework.org/schema/security"
  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.xsd     
  http://www.springframework.org/schema/security     
  http://www.springframework.org/schema/security/spring-security.xsd">
  
  <!--          -->
  <security:http pattern="/login.jsp" security="none"/>
  <security:http pattern="/failer.jsp" security="none"/>
  <security:http pattern="/css/**" security="none"/>
  <security:http pattern="/img/**" security="none"/>
  <security:http pattern="/plugins/**" security="none"/>
  
  <!-- 
            
    auto-config="true"             ,          
    use-expressions="false"      SPEL   (    )
  -->
  <security:http auto-config="true" use-expressions="false">
    <!--            pattern="       " access="      ,   ROLE_USER  ROLE_ADMIN   " -->
    <security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/>
    
    <!--            -->
    <security:form-login 
      login-page="/login.jsp"
      login-processing-url="/login.do"//    
      default-target-url="/index.jsp"
      authentication-failure-url="/failer.jsp"
      authentication-success-forward-url="/pages/main.jsp"
    />
    
    <!--        -->
    <security:csrf disabled="true"/>
    
    <!--      /logout.do   ,     /login.jsp   -->
    <security:logout invalidate-session="true" logout-url="/logout.do" logout-success-url="/login.jsp" />
    
  </security:http>
  
  <!--                -->
  <security:authentication-manager>
    <security:authentication-provider user-service-ref="userService">//userService          
       <!--        ,            -->
      <security:password-encoder ref="passwordEncoder"/>
    </security:authentication-provider>
  </security:authentication-manager>
  
  <!--      ,        ,          -->
  <bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
  
  <!--         ,             
  <security:authentication-manager>
    <security:authentication-provider>
      <security:user-service>
        <security:user name="admin" password="{noop}admin" authorities="ROLE_USER"/>
      </security:user-service>
    </security:authentication-provider>
  </security:authentication-manager>
  -->
  
 </beans>  

 3.IUserService 계승 UserDetailsService 인 터 페 이 스 를 정의 합 니 다.

UserServiceImpl 을 만들어 서 IUserService 인 터 페 이 스 를 실현 하고 loadUserByUsername 방법 을 덮어 씁 니 다.

 @Service("userService")//이 이름 은 spring-security.xml 에 설 정 된 인증 기 이름과 같 아야 합 니 다.

public class UserServiceImpl implements IUserService {
  @Autowired
  private IUserDao userDao;
  @Autowired//                    
  private BCryptPasswordEncoder bCryptPasswordEncoder;
  @Override
  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    UserInfo userInfo = null;
    try {
      userInfo = userDao.findByUsername(username);//              ,    UserInfo  
    } catch (Exception e) {
      e.printStackTrace();
    }
    //            UserDetails
    // User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));//                    
    User user = new User(userInfo.getUsername(), userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));
    return user;
  }
  //        List  ,           
  public List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {
    List<SimpleGrantedAuthority> list = new ArrayList<>();
    for (Role role : roles) {
      list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
    }
    return list;
  }
  /**
   *      
   * @param userInfo
   */
  @Override
  public void save(UserInfo userInfo) throws Exception {
    //         
    userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));
    userDao.save(userInfo);
  }
}
  4.항목 을 시작 하여 사용 자 를 추가 하 는 지 테스트 합 니 다.새로 추 가 된 사용자 가 로그 인 에 성공 할 수 있 는 지 확인 합 니 다.
총결산
Spring Security 가 데이터베이스 인증 및 사용자 암호 화 및 복호화 기능 을 사용 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring Security 데이터베이스 인증 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 십시오.앞으로 많은 지원 을 바 랍 니 다!

좋은 웹페이지 즐겨찾기