自定义注解 登录拦截
来源:互联网 发布:mysql 合计函数 编辑:程序博客网 时间:2024/06/10 14:24
1.自定义登录验证注解类
package com.*.*;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 自定义登录验证注解 */@Target({ ElementType.METHOD, ElementType.TYPE })//METHOD:用于描述方法,TYPE:用于描述类、接口(包括注解类型)或enum声明@Retention(RetentionPolicy.RUNTIME)//在运行时有效(即运行时保留)public @interface RequireLogin { /** * 是否要登录 * @return */ boolean value() default true;}
2.在方法、类、接口或者枚举上声明
例如:在某方法上添加@RequireLogin
@RequireLogin//默认为true @RequestMapping(value = "/list", method = RequestMethod.POST) public void list(String code, HttpServletResponse response, HttpServletRequest request){ //内容省略。。。 }
3.如何实现注解判断是否登录?对相应注解信息处理(其他注解功能根据需求编写逻辑)
<-- 拦截器配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="com.*.*.interceptor.LoggerInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
拦截器
package com.*.*.interceptor.LoggerInterceptor;import java.lang.reflect.Method;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang3.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import com.*.*.controller.BaseController;import com.*.*.annotation.RequireLogin;import com.*.*.utils.LoginUtils;/** * 登录拦截器 */public class LoginInterceptor extends HandlerInterceptorAdapter { protected static final Log logger = LogFactory.getLog(LoginInterceptor.class); public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HandlerMethod handlerMethod = (HandlerMethod) handler; Method method = handlerMethod.getMethod(); RequireLogin requireLogin = method.getAnnotation(RequireLogin.class); if (requireLogin == null) { Class<?> cls = handlerMethod.getBeanType(); requireLogin = cls.getAnnotation(RequireLogin.class); } if (requireLogin != null && requireLogin.value()) { // 获得cookie中的customerId(用户登录Id) String customerId = LoginUtils.getMemberId(request); if (StringUtils.isBlank(customerId)) { Object action = handlerMethod.getBean(); if (action instanceof BaseController) {//BaseController为controller的父类 ((BaseController) action).putLoginFailedResult(response, "您还没有登录,或者登录已超时,请重新登录!"); } LoginUtils.removeLoginCookie(response);//移除cookie return false; } return true; } return true; }}
阅读全文
0 0
- 自定义注解 登录拦截
- SpringBoot拦截器和自定义注解验证是否登录
- 自定义注解拦截
- SpringMVC利用拦截器拦截自定义注解
- 自定义注解,实现拦截器
- Aspectj拦截自定义注解方法
- Struts2自定义拦截器:登录拦截
- spring AOP 注解实现登录权限拦截
- SpringMVC 使用注解完成登录拦截
- 自定义注解@NeedLogin登录校验
- spring 拦截器 spring自定义注解
- 自定义注解+拦截器实现权限控制
- struts2自定义拦截器注解配置方法
- 自定义注解在拦截器中的应用
- 自定义注解+拦截器实现权限控制
- SpringMVC拦截器实例之自定义注解
- SpringMVC拦截器实例之自定义注解
- 使用注解方式调用自定义拦截器
- 求边缘点集合问题
- C#--添加对象之前的数据验证
- 七牛云-CDN常见问题
- 基础几何学习笔记
- svn up 更新失败 Working copy path '' does not exist in repository
- 自定义注解 登录拦截
- 创建动态库
- HashMap简单原理分析
- HDU 6165 FFF at Valentine
- plsql中dbms_output.put_line使用
- 缓式评估、写时复制及引用计数的关系
- 虚拟机VMware显示“内部错误”的解决方法
- 蒙特卡洛--抛洒点求圆周率
- 开源|基于区块链的智能合约快速上手