Red de conocimiento informático - Material del sitio web - Cómo asignar un valor al atributo principal en shiro

Cómo asignar un valor al atributo principal en shiro

Principal es un objeto, es decir, un objeto de entidad con un atributo de nombre de usuario

Los detalles son los siguientes:

En el método de inicio de sesión, llame al asunto. login (token), también debe construir manualmente el objeto SimpleAuthenticationInfo usando principal y domainName. De hecho, el principal aquí es un objeto, es decir, un objeto de entidad con un atributo de nombre de usuario, y luego el objeto SimpleAuthenticationInfo se almacenará en la sesión. .

El código es el siguiente: try?{ sujeto.login(token); //Obtener el objeto kingdomSecurityManager, que contiene mucha información, como datos en el archivo de configuración RealmSecurityManager?=? (RealmSecurityManager)?securityManager; Collectionlt;Realmgt;?collection?=?realmSecurityManager.getRealms();if?(colección! null?amp;amp;?collection.size()gt;0){ Iterador?iterador?=?colección .iterator();? while(iterator.hasNext()){Realm?realm?=?(Realm)iterator.next();? // Obtener el nombre de la fuente de datos predeterminada, aunque el nombre predeterminado es iniRealm, String?realmName. ?= también se puede obtener mediante programación. ?realm.getName(); //Objeto de entidad personalizado User?setUsername(nombre de usuario); user.setPassword(contraseña); //Obtener el objeto SimpleAuthenticationInfo?info?=?new?SimpleAuthenticationInfo( usuario, contraseña, domainName); // analiza a través del código fuente después de llamar a sujeto.login (token), se guardará en la sesión a través de SubjectContext, por lo que se reutiliza directamente el código fuente (clase DefaultSecurityManager) SubjectContext?subjectContext?= ?nuevo?DefaultSubjectContext(); sujetoContext.setAuthenticated(verdadero); sujetoContext.setAuthenticationToken(token); sujetoContext.setAuthenticationInfo(info); if(¡asunto! =?null)?{ sujetoContext.setSubject(asunto);

}// Guardar en Completado en este método

realmSecurityManager.createSubject(subjectContext);

}

}

}catch (UnknownAccountException?e){

error?=?""El nombre de usuario no existe";

}

error?=?"?El nombre de usuario no existe ";

}catch?(IncorrectCredentialsException?e){

error?=?"Nombre de usuario o contraseña incorrectos";

>}catch?(AuthenticationException?e){

error?=?"Otro error" e.getMessage();

}

El resultado final es la etiqueta lt;shiro:principal property="username"/gt; Los resultados se muestran correctamente en la página, lo que indica que este método funciona.