English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Solución de código del interceptador de anotaciones de autenticación de métodos de springmvc

Recientemente, mientras estaba escribiendo un proyecto con SpringMvc, me encontré con un problema, que es la autenticación del método, este problema lo resolví después de un día, a continuación, veamos la solución

项目需求:需要在鉴权的地方,我只需要打个标签即可,比如只有用户登录才可以进行的操作,一般情况下我们会在执行方法时先对用户的身份进行校验,这样无形中增加了非常大的工作量,重复造轮子,有了Java注解只需要在需要鉴权的方法上面打个标签即可:

解决方案:

  1、首先创建一个注解类:

@Documented
@Inherited
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
  boolean validate() default true;
}

2、再创建一个拦截器:

public class AuthInterceptor extends BaseInterceptor{
	@Override
	  public Boolean preHandle(HttpServletRequest request,
	      HttpServletResponse response, Object handler) throws Exception {
		if(handler.getClass().isAssignableFrom(HandlerMethod.class)){
			Auth authPassport = ((HandlerMethod) handler).getMethodAnnotation(Auth.class);
			//没有声明需要权限,或者声明不验证权限
			if(authPassport==null){
				return true;
			} else{
				//在这里实现自己的权限验证逻辑
				if(true){
					//如果验证成功返回true(这里直接写false来模拟验证失败的处理)
					System.out.println("执行权限校验了");
					return true;
				} else{
					//如果验证失败
					//返回到登录界面
					//          System.out.println("权限校验正确");
					//          response.sendRedirect("account/login");
					return false;
				}
			}
		} else{
			return true;
		}
	}
}

3、配置拦截器:需要在*-servlet.xml中添加以下代码,如果您自定义了配置文件,也可以直接将其放入您定义的配置文件中

<mvc:interceptors>
	<bean class="com.benxq.shop.user.interceptors.AuthInterceptor">/>
</mvc:interceptors>

Atención: debe cambiar el predeterminado a RequestMappingHandlerMapping, y agregar el bean RequestMappingHandlerAdapter

Reinicie Tomcat

Advertencia: si se necesita autenticación de método, solo hay que marcarlo con @Auth en el método. Si se necesita autenticación de todos los métodos de la clase, solo hay que marcarlo con @Auth en la clase.

Entonces, la pregunta es, el interceptor de método también bloquea los recursos estáticos, necesitamos interceptar los archivos estáticos en tomcat, por ejemplo: mi solución es configurar en web.xml, también pueden sugerirme métodos buenos, puedo agregar mi QQ752432995Exploración conjunta

<servlet-mappings>
   <servlet-nombre>default</servlet-nombre>
   <url-patrón>*.jpg</url-patrón>
 </servlet-mappings>
 <servlet-mappings>
   <servlet-nombre>default</servlet-nombre>
   <url-patrón>*.png</url-patrón>
 </servlet-mappings>

Resumen

Esto es todo el contenido del código de solución del interceptor de anotación de autorización de método de SpringMVC en este artículo, espero que pueda ayudar a todos. Los amigos interesados pueden continuar consultando nuestro sitio web:

Implementación del interceptor de single sign-on de SpringMVC

Explicación detallada de la implementación del interceptor de session de SpringMVC

Si encuentra algún defecto, por favor déjenos un mensaje. ¡Gracias a los amigos por su apoyo a nuestro sitio web!

Declaración: Este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha cargado por los usuarios de Internet de manera autónoma, este sitio web no posee los derechos de propiedad, no se ha realizado una edición humana y no asume la responsabilidad legal correspondiente. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#w3Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha cargado por los usuarios de Internet de manera autónoma, este sitio web no posee los derechos de propiedad, no se ha realizado una edición humana y no asume la responsabilidad legal correspondiente. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#w

Te gustará