Permisos de inicio de sesión de origen
De esta manera, al escribir controles o páginas web, ¡no es necesario considerar cuestiones de permisos! Los permisos se gestionan mediante filtros.
La configuración del servlet.xml de Spring es la siguiente:
& lt! -Interceptación del sistema de permisos->
& ltmvc:Interceptor>
& ltmvc:Interceptor>
& ltmvc:Ruta asignada = " /admin/* * "/ & gt;
& ltbean class = " com . zmax . web . spring . admincontext interceptor " & gt; -Modo de desarrollo, demasiado vago para iniciar sesión-& gt;
& ltproperty name = " devmode " value = " 1 "/& gt;
& ltproperty name = " auth " value = " true "/& gt;
& ltproperty name = " iniciar sesión URL " value = "/admin/log in . do "/& gt;
& ltproperty nombre = " returnUrl " value = "/admin/index . do "/& gt;
& ltproperty name = " exclusionUrls " & gt
& ltlist& gt
<Value>/test.do</value>
<Value>/log in.do</value>
& ltvalue>/logout.do</value>
</list>
& lt/property>
& lt/bean>
& lt/MVC:interceptor>
Código JAVA correspondiente:
Paquete com.zmax.
Importar servlet javax. respuesta del servlet http;
Importar org. Apache. log4j.
Importar org.spring framework.web.servlet.modelandview;
importar org.spring framework.web.servlet.handler.handlerinterceptoradapter;
Clase pública AdminContextInterceptor extiende HandlerInterceptorAdapter{
Logger final estático privado Logger = Logger . get Logger(admincontext interceptor . class);
@override
El preprocesamiento booleano público (solicitud HttpServletRequest,
respuesta HttpServletResponse, controlador de objetos) genera una excepción {
if (logger.isDebugEnabled( ))
Logger.debug("Permiso de procesamiento previo");
//Obtener la ubicación visitada por el usuario
sitio.
String uri = getURI(request);
//No está dentro del alcance de verificación.
if(exclude(uri)) {
Devuelve verdadero
}
AdminUser AdminUser =(AdminUser)sesión obtener atributo(. request, SessionName.ADMINUSER);
//Los usuarios vacíos saltan a la página de inicio de sesión.
if (adminUser == null) {
if(devmode == null | | devmode . es igual a (0)){
respuesta enviar redireccionamiento (. getLoginUrl(request));
Devuelve falso
}
}
//Si el usuario no tiene permisos suficientes, salte a página de inicio de sesión.
if(checkAdmin(adminUser, uri)){
respuesta enviar redirección(getLoginUrl(solicitud));
Devuelve falso
}De lo contrario{
//Los permisos son suficientes, devuelve verdadero.
adminUser = adminuserservice . get(devmode);
session.setAttribute(solicitud, respuesta, nombre de sesión. ADMINUSER, ADMINUSER
Devuelve verdadero); p>
p>
}
Devuelve verdadero
}
@Override
Identificador de publicación nula pública (http solicitud de solicitud de servlet,
respuesta HttpServletResponse, controlador de objetos, ModelAndView mav)
Lanza una excepción {
if (logger.isDebugEnabled())
Logger.debug("procesamiento de permisos");
}
@override
Después de completar la anulación pública (solicitud de servlet http,
Respuesta HttpServletResponse, controlador de objetos, excepción ex)
generar excepción {
if (logger.isDebugEnabled())
Logger.debug("Permiso posprocesamiento" );
}
}