shiro (6) 분포 식 응용 감 권 방식 의 Shiro 통합 SpringBoot 에서 사용자 정의 SessionId

2806 단어 shiro
  • Shiro 기본 sessionid 생 성 클래스 이름 SessionIdGenerator
  • 클래스 를 만 들 고 SessionIdGenerator 인 터 페 이 스 를 실현 하 는 방법
  • public class RandomSessionIdGenerator implements SessionIdGenerator {
    
        private static final Logger log = LoggerFactory.getLogger(RandomSessionIdGenerator.class);
    
        private static final String RANDOM_NUM_GENERATOR_ALGORITHM_NAME = "SHA1PRNG";
        private Random random;
    
        public RandomSessionIdGenerator() {
            try {
                this.random = java.security.SecureRandom.getInstance(RANDOM_NUM_GENERATOR_ALGORITHM_NAME);
            } catch (java.security.NoSuchAlgorithmException e) {
                log.debug("The SecureRandom SHA1PRNG algorithm is not available on the current platform.  Using the " +
                        "platform's default SecureRandom algorithm.", e);
                this.random = new java.security.SecureRandom();
            }
        }
    
        public Random getRandom() {
            return this.random;
        }
    
        public void setRandom(Random random) {
            this.random = random;
        }
    
        /**
         * Returns the String value of the configured {@link Random}'s {@link Random#nextLong() nextLong()} invocation.
         *
         * @param session the {@link Session} instance to which the ID will be applied.
         * @return the String value of the configured {@link Random}'s {@link Random#nextLong()} invocation.
         */
        public Serializable generateId(Session session) {
            //ignore the argument - just call the Random:
            return Long.toString(getRandom().nextLong());
        }
    }
    
    public class JavaUuidSessionIdGenerator implements SessionIdGenerator {
    
        /**
         * Ignores the method argument and simply returns
         * {@code UUID}.{@link java.util.UUID#randomUUID() randomUUID()}.{@code toString()}.
         *
         * @param session the {@link Session} instance to which the ID will be applied.
         * @return the String value of the JDK's next {@link UUID#randomUUID() randomUUID()}.
         */
        public Serializable generateId(Session session) {
            return UUID.randomUUID().toString();
        }
    }
    
        /**
         *    session   
         * @return
         */
        public RedisSessionDAO redisSessionDAO(){
            RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
            redisSessionDAO.setRedisManager(getRedisManager());
    
            //  sessionid   
            redisSessionDAO.setSessionIdGenerator(new CustomSessionIdGenerator());
    
            return redisSessionDAO;
        }
    
    

     
     
  • 100% 신뢰 할 수 있 는 알고리즘, 폭력 해독, 궁 거 가 없다.
  • 제한시간 내 ip 로그 인 오류 횟수
  • 그래 픽 인증 코드 를 추가 하고 너무 간단 해 서 는 안 되 며 자주 사용 하 는 OCR 은 인증 코드
  • 를 식별 할 수 있다.
  • 제안: 마이크로 서비스 에서 특히 C 단 사용자 에 대한 응용 은 너무 복잡 한 권한 검 사 를 하지 마 십시오. 특히 성능 에 영향 을 주 는 것
  • 좋은 웹페이지 즐겨찾기