2017-11-06 9 views
0

저는 신입생 apache-shiro입니다. 내 CustomRealm을 구현하려고했습니다. 그러나 나는 오류가 있습니다.JdbcRealm in apache shiro

public class MyCustomRealm extends JDBCRealm { 

private Map<String, String> credentials = new HashMap<>(); 
private Map<String, Set<String>> roles = new HashMap<>(); 
private Map<String, Set<String>> perm = new HashMap<>(); 

{ 
    credentials.put("user", "password"); 
    credentials.put("user2", "password2"); 
    credentials.put("user3", "password3"); 

} 

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException 
{ 

    UsernamePasswordToken uToken = (UsernamePasswordToken) token; 

    if(uToken.getUsername() == null || uToken.getUsername().isEmpty() 
      || !credentials.containsKey(uToken.getUsername())) 
    { 
     throw new UnknownAccountException("username not found!"); 
    } 

    return new SimpleAuthenticationInfo(uToken.getUsername(), credentials.get(uToken.getUsername()), getName()); 
} 
} 

SecurityManager 구현

@Component 
public class CustomSecurityManager { 
public Subject getSubject() 
{ 
    Realm realm = (Realm) new MyCustomRealm(); 
    SecurityManager securityManager = new DefaultSecurityManager(realm); 
    SecurityUtils.setSecurityManager(securityManager); 
    return SecurityUtils.getSubject(); 
} 

} 

입니다하지만 응용 프로그램을 실행하면 Cannot cast MyCustomRealm to shiro.Realm

가 어떻게 내 사용자 정의 영역을 구현할 수 없다는 오류가 발생합니다?

답변

0

잘못된 JDBCRealm 영역을 확장하는 것처럼 보입니다. JdbcRealm이 가져 오기 문을 확인해야합니다.