Red de conocimiento informático - Conocimiento sistemático - Permisos de inicio de sesión de origen

Permisos de inicio de sesión de origen

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! -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>

}

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

}

}