Control de permisos del código fuente
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! - Intercepción del sistema de permisos - gt;
ltmvc: interceptor gt
ltmvc: interceptor gt
ltmvc: ruta de mapeo = "/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 nombre = " URL de inicio de sesión " valor = "/admin/iniciar sesión do "/ gt;
ltproperty nombre = " URL de retorno " valor = ". admin/index .do "/ gt;
ltproperty name = " exclusionUrls " gt
ltlistgt
ltvaluegt/test . do lt;/value gt;
lt valor gt/iniciar sesión. do lt;/valor gt;
lt valor gt/logout hacer lt;/valor gt;
lt/ lista. gt;
lt/property gt;
lt/bean gt;
lt/MVC: interceptor gt
Código JAVA correspondiente :
Paquete com.zmax. utils;
Importar servlet http. ;
Importar org.Apache.log4j.logger;
Importar org.spring framework.web.servlet.modelandview;
importar org.spring framework . . servlet . handlerinterceptoradapter;
La clase pública AdminContextInterceptor extiende HandlerInterceptorAdapter{
Logger final estático privado = Logger . >@Override
El preprocesamiento booleano público (solicitud HttpServletRequest,
respuesta HttpServletResponse, controlador de objetos) genera una excepción {
if (logger.isDebug)
Enabled())
Logger.debug("Preprocesamiento de permisos");
//Obtiene la dirección visitada por el usuario.
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" );
}
}