Shiro“无法实例化课程”

时间:2018-10-01 09:24:10

标签: java shiro

这是我的问题: 我有一个运行良好的Web应用程序,直到星期六。但是这样就无法加载我的权利了。 这是我的shiro.ini文件中的代码段

entityRealm =  com.cagecfi.shiro.EntityRealm 
securityManager.authorizer = $entityRealm
authentif = com.cagecfi.Entities.Utilisateur

和java类:

public class EntityRealm extends AuthorizingRealm{

    protected UtilisateurFacadeLocal utifl;
    protected ProfilRoleFacadeLocal prfl;
    protected static Utilisateur utilisateur;
    protected static Profil profil;
    protected static List<ProfilRole> profilRoles;

    public EntityRealm() throws NamingException {
        System.out.println("enter entity realm");
        this.setName("entityRealm");
        CredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher("SHA-256");
        this.setCredentialsMatcher(credentialsMatcher);
        InitialContext context = new InitialContext();
        this.utifl = (UtilisateurFacadeLocal) context.lookup("java:global/DOLEANCESAPPLI/UtilisateurFacade");
        this.prfl = (ProfilRoleFacadeLocal) context.lookup("java:global/DOLEANCESAPPLI/ProfilRoleFacade");
        System.out.println("out entity realm");
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {

        final UsernamePasswordToken token = (UsernamePasswordToken) authcToken;

        utilisateur = utifl.getOneBy("login", token.getUsername());

        SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo();
        try {
            if (utilisateur != null) {
                simpleAuthenticationInfo = new SimpleAuthenticationInfo(utilisateur.getLogin(), utilisateur.getPassword(), getName());
            } else {
                simpleAuthenticationInfo = null;
                throw new UnknownAccountException("Utilisateur inconnu");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return simpleAuthenticationInfo;
    }

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        String userId = (String) principals.fromRealm(this.getName()).iterator().next();
        utilisateur = utifl.getOneBy("login", userId);
        if (utilisateur != null) {
            final SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
            profilRoles = this.prfl.getBy("profil", utilisateur.getProfil());

            final List<String> roles = new ArrayList<>();
            profilRoles.stream().forEach((proRole) -> {
                roles.add(proRole.getRole().getNom());
            });
            info.addRoles(roles);

            return info;
        } else {
            return null;
        }
    }


    public static Utilisateur getUser() {
        Subject currentUser = SecurityUtils.getSubject();
        if (currentUser.isAuthenticated()) {
            return utilisateur;
        }
        return null;
    }

    public static Subject getSubject() {
        return SecurityUtils.getSubject();

    }

    @Override
    public void clearCachedAuthorizationInfo(PrincipalCollection principals) {
        super.clearCachedAuthorizationInfo(principals);
    }

}

一种奇怪的方式,shiro自星期六以来一直寄给我。

Exception during lifecycle processing
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.shiro.config.ConfigurationException: Unable to instantiate class [com.cagecfi.shiro.EntityRealm] for object named 'entityRealm'.  Please ensure you've specified the fully qualified class name correctly.

为了弄清楚清理和构建之后,它开始向我发送此错误。 我什至恢复了项目的先前备份,但仍然一无所获。 有人可以帮助我,告诉我我错过了什么吗? 谢谢。

0 个答案:

没有答案