1. Vấn đề:
Trong các shiro realm thường tương tác với CSDL thông qua các class DAO để lấy thông tin người dùng phục vụ xử lý chứng thực. Tuy nhiên do các Realm class của Shiro thường được khởi tạo trước sau đó mới đến các lớp Component của Spring framework nên các DAO khai báo trong realm class không thể sử dụng anotation autowire của Spring (null).
2. Cách xử lý
B1: Khai báo class DAO vào file shiro.ini
userRealmDao = com.viettel.smartparking.model.dao.UserRealmDao
B2: Khai báo DAO như là một thuộc tính của Realm class trong shiro.ini
jdbcRealm = com.viettel.smartparking.shiro.realm.ShiroRealm
jdbcRealm.credentialsMatcher = $credMatcher
jdbcRealm.userRealmDao = $userRealmDao
B3: Khai báo lớp DAO trong Realm class
private UserRealmDao userRealmDao
Nhận xét