Red de conocimiento informático - Conocimiento sistemático - Control de permisos del código fuente

Control de permisos del código fuente

En cuanto a la gestión de permisos, si se trata de un sitio web, lo más sencillo es utilizar filtros. Está controlado por la URL visitada por el usuario.

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>

}

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" );

}

}