정말로 사용자 수준에서만 사용 권한을 할당하려는 경우 Shiro를 행복하게 만들기 위해 역할 테이블을 "속일"수 있습니다.
언급 한대로 JdbcRealm
을 사용하고 테이블 설정에 3 가지 쿼리를 지정하십시오. 당신은이 구조가 당신의 권한 테이블을 수정해야합니다 : 필요에 따라
permission (id, permissionname, user_fk)
는 그런 다음 CREATE_USER/delete_user 권한에 대한 행을 삽입합니다. 이렇게하면 DB 스키마를 수정할 필요없이 설정에 다른 권한 (예 : reset_password)을 추가하는 것이 매우 간단합니다. shiro.ini에서
(또는 당신이 당신의 시로 구성 파일 호출 방법) :
이
jdbcRealm.authenticationQuery = select password from user where email=?
jdbcRealm.userRolesQuery = select id from user where email=?
jdbcRealm.authenticationQuery = select permissionname from permission where user_fk=?
셋업에서 작은 트릭은 다음과 같습니다 쿼리에 대한
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
를이 다음 사용 당신은 전혀 역할을 가지고 있지 않으므로 사용자의 ID를 역할 이름으로 반환 할뿐입니다. 권한 테이블의 조회가 완료되면 역할 이름 (= user pk)을 사용하고 연관된 사용 권한을 반환합니다.
이것은 훌륭합니다! – xwb1989