当前位置: 首页 > news >正文

南通网站建设维护百度app下载安装

南通网站建设维护,百度app下载安装,苏州市吴江住房和城乡建设局网站,html5高端网站建设织梦模板在项目开发过程中,会有很多API接口不需要登录就能直接访问,比如公开数据查询之类的 ~ 常规处理方法基本是 使用拦截器或过滤器,拦截需要认证的请求路径。在拦截器中判断session或token信息,如果存在则放行,否则跳转到…

在项目开发过程中,会有很多API接口不需要登录就能直接访问,比如公开数据查询之类的 ~

常规处理方法基本是 使用拦截器过滤器,拦截需要认证的请求路径。在拦截器中判断session或token信息,如果存在则放行,否则跳转到登录页。过滤器原理与拦截器类似,可以在过滤器中判断请求的session或token信息,麻烦的地方就是:每次开发新的免登录接口的时候,都需要去配置一下路径

今天介绍一个更优雅的方法:自定义注解的方式

基本思路是:自定义一个注解,在不需要校验登录的Controller方法或类上使用该注解。通过AOP或拦截器在方法执行前判断免登录状态

自定义注解这里命名为NoToken

import java.lang.annotation.*;/*** 不校验token注解*/
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface NoToken {String name() default "";
}

这里采用拦截器搭配使用,拦截器代码如下

@Slf4j
public class SessionInterceptor implements HandlerInterceptor {//在请求处理之前进行调用Controller方法调用之前@Override@Referencepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if (handler instanceof HandlerMethod) {HandlerMethod handlerMethod = (HandlerMethod) handler;NoToken classAnno = handlerMethod.getMethod().getDeclaringClass().getAnnotation(NoToken.class);//获取出Controller上的NoToken注解if (classAnno != null) {// 如果注解不为null, 说明不需要拦截, 直接放过return true;} else {Method method = handlerMethod.getMethod();handlerMethod.getMethodAnnotation(NoToken.class);//获取出方法上的NoToken注解NoToken access = method.getAnnotation(NoToken.class);if (access != null) {// 如果注解不为null, 说明不需要拦截, 直接放过return true;}}}RedisService redis = (RedisService) SpringContextUtils.getBean("redisService");String token = request.getHeader("token");boolean ok = false;log.info("开始检验token!");if (!StringUtils.isEmpty(token)) {if (redis.exists(token)) {redis.expire(token, ConstantsUtil.APP_TOKEN_EXPIRE);log.info("token有效!");ok = true;}}if (!ok) {Map<String, Object> result = new HashMap<>();result.put("returncode","-1");result.put("returnmsg", "登录已过期,请重新登录");writeJSON(response, result);return ok;}return ok;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) throws Exception {}public void writeJSON(HttpServletResponse response, Object o)throws IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();String JsonString = JSON.toJSONString(o);out.write(JsonString);}
}

大家看到在NoToken注解和拦截器上,做了两种处理 也就是类注解 方法注解

如果注解放到方法上,该方法调用的时候就是免登录的。如果注解放到@Controller类上,那么该类下的所有请求接口,都是免登录的(是不是很方便 ~

/*** 类上加NoToken注解,该类下所有方法都免登录*/
@NoToken
@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {/*** 方法上单独加注解,只对该方法免登录*/@NoToken@RequestMapping("testMethod")public void testMethod() {System.out.println("1111111111111");}}

以上就是实现方式,如果觉得还有用,就点个赞吧 ~

http://www.hkea.cn/news/443996/

相关文章:

  • 兰州网站优化哪家好手机系统流畅神器
  • 广东深圳住房和城乡建设部网站文章优化软件
  • java制作动态网站开发怎么可以让百度快速收录视频
  • 做网站管理好吗阳泉seo
  • 网站排名优化建设seo人人网
  • html5可以做动态网站惠州seo计费
  • 商城网站带宽控制河南网站建设哪家公司好
  • 贵阳网络公司网站建设网络推广公司深圳
  • 企业网站建设公司电话西安seo分析报告怎么写
  • 岳阳市政府网网站seo优化报告
  • 门头沟网站建设外贸谷歌推广
  • 铜陵市住房和城乡建设委员会网站中国最新疫情最新消息
  • 动态网站建设 教程接广告推广的平台
  • 人力资源和社会保障部是干什么的seo最新快速排名
  • 网站标题关键优化网络营销代运营外包公司
  • 罗山网站建设seo网络推广优化
  • 如何在eclipse上做网站网站链接查询
  • 企业网站如何设计网页直通车推广计划方案
  • 简单的购物网站设计seo网络推广知识
  • 做众筹的网站关键词网站推广
  • 做网站 页面自适应渠道推广
  • 广东企业网站建设策划高端网站设计公司
  • wordpress文章批量编辑网站优化方案模板
  • 北京互联网公司开发的网站今日关注
  • 网站限制上传图片大小免费网络推广100种方法
  • 提供网站建设服务的网站价格快速推广
  • 政府网站建设原则 统筹规划进入百度官网
  • 网站如何做等级保护谷歌搜索引擎363
  • 天河网站建设网络推广不属于网络推广方法
  • 阜阳中国建设银行官网站百度提交入口网站网址