SpringBoot-Shiro-Vue 앞 뒤 분리 권한 인증 실현

KKing 은 Springboot+Ant-Design-Pro-Vue 가 구현 하 는 앞 뒤 분리 Admin 권한 관리 시스템 입 니 다.미리 보기 주소,원본 코드 는 Github 에 있 습 니 다.환영 스타 입 니 다.
글 참고:Spring Boot-Shiro-Vue 기반 권한 관리 방향 을 제공 합 니 다.앞 뒤 단 계 를 모두 제어 하여 버튼/인터페이스 등급 의 권한 을 실현 하고 자신의 실현 을 하 며 손 을 연습 하 였 습 니 다.앞에서 보 듯 이 앞 뒤 분리 프로젝트 에서 권한 통제 에 대한 사고 와 실현 과정 에서 의 소란:SpringBoot+Shiro 의 소란-Shiro 의 Filter 모드 를 사용 하지 않 습 니 다.       PS:전단 코드 는 vue-admin-template 를 사용 합 니 다.
1.Shiro 기본 개념
       앞에서 언급 한 바 와 같이 Shiro 의 기본 개념 에서 일부 용 어 는 이해 하기 가 직관 적 이지 않 을 수 있 습 니 다.아래 의 인 스 턴 스 코드 와 결합 하여 어떻게 사용 하 는 지 보고 보조 적 으로 이해 할 수 있 습 니 다.       
2.WEB 의 전형 적 인 사용자 검증 절차
쿠키 브 라 우 저 서버 SessionManager 로그 인 사용자 이름/비밀번호 로그 인 에 성 공 했 습 니 다.session 을 저장 하고 sessionId 를 저장 하여 사용자 정 보 를 가 져 옵 니 다.sessionId sessionId 를 사용 하여 session 인증 을 받 고 사용자 정 보 를 되 돌려 줍 니 다.
       특별히 Cookie 와 Session Manager 를 따로 나 온 이 유 는 이 두 가 지 를 선택 할 수 있 고 어 울 릴 수 있 기 때 문 입 니 다.
  • 쿠키 는 사용 하지 않 고 sessionId 만 페이지 의 메모리 에 저장 할 수 있 습 니 다.이때 페이지 가 닫 히 고 sessionId 도 잃 어 버 렸 습 니 다.물론 서버 에 야생 포인터 와 유사 한 session 이 존재 합 니 다.localStorage 사용 도 선택 할 수 있 습 니 다
  • SessionManager,Shiro 는 기본 Default WebSessionManager 를 제공 합 니 다.Memory SessionDAO 를 사용 하여 서버 메모리 에 session 을 저장 하지만 몇 가지 문제 가 있 습 니 다.생산 환경 에서 사용 하 는 것 을 추천 하지 않 습 니 다.
  • 지속 되 지 않 고 서버 에서 session 을 다시 시작 하면 잃 어 버 립 니 다

  • 메모리 가 넘 치기 쉽다
  • 클 러 스 터 모드 에서 session 공유 가 불가능 합 니 다.


  • 실현
           사고 방향 을 정리 해 보 세 요.앞 뒤 단 분리 권한 검증 과 일반 웹 서비스의 권한 검증 이 어떤 차이 가 있 는 지 사실은 하나 입 니 다 전개 에 있어 백 엔 드 는 두 개의 전단 에 대한 통제 가 빠 졌 습 니 다.
  • DOM

  •        따라서 일반적인 웹 서비스 에 대해 다음 과 같은 수정 이 필요 합 니 다.
    경로 관련:
  • 인증 되 지 않 은 페이지 는 Shiro 로 직접 이동 할 수 없고 로그 인 되 지 않 은 오 류 를 되 돌려 줍 니 다.전단 에서 이 루어 집 니 다
  • shiroFilterFactoryBean.setLoginUrl("/unauth");
    @RequestMapping("/unauth")
    @ResponseBody
    public Result unauth(){
        Result result = new Result(100);
        result.message = "   ";
        return result;
    }
    
  • 로그 인 인증 이 필요 없 는 모든 URL 을 설정 합 니 다.백 엔 드 에서 돌아 오 는 권한 데이터 에 따라 경로(권한 검증 이 필요 없 는 것 과 혼 합 된 것 은 경로 가 백 엔 드 가 필요 하지 않 기 때 문 입 니 다.권한 검증 이 필요 한 모든 업무 논 리 는 권한 이 있어 야 합 니 다)
  • filterChainDefinitionMap.put("/", "anon");
    
  • 전단 은 되 돌아 오 는 권한 데이터 에 따라 경로 설정 을 해 야 합 니 다.구체 적 으로 Vue 에서 Vue router 를 사용 하 는 addRoutes 동적 추가 경로

  • DOM 관련
    4.567917.전단 은 백 엔 드 에서 돌아 오 는 권한 데이터 에 따라 메뉴 나 버튼 의 전 시 를 결정 합 니 다
    4.567917.크로스 도 메 인,이것 은 앞 뒤 분리 가 가 져 온 새로운 문제(따로 배치 하면)
  • 백 엔 드 는 크로스 도 메 인(@CrossOrigin 추가 또는 필터 사용)을 설정 해 야 합 니 다

  •        없어 지면 이렇게 많이 수정 해 야 합 니 다.구체 적 으로 실현 하면 대량의 코드 를 붙 이지 않 습 니 다.소스 코드 는 github 를 볼 수 있 습 니 다.나중에 레 디 스 의 세 션 지원 을 추가 해 보도 록 하 겠 습 니 다.

    좋은 웹페이지 즐겨찾기