过滤器匹配

简介: UserLoginInterceptor 是一个基于Spring的登录拦截器,通过注解@Login控制接口访问权限。若方法标记为无需登录则放行,否则进行用户鉴权,结合Redis实现会话管理,确保接口安全访问。(236字符)

package com.zhicall.majordomo.core.security.interceptor;

import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.alibaba.fastjson.JSON;
import com.zhicall.care.realtime.util.ResultMessageBuilder;
import com.zhicall.care.realtime.util.ResultMessageBuilder.ResultMessage;
import com.zhicall.care.system.basic.BeanFactory;
import com.zhicall.majordomo.core.common.constant.GlobalCst;
import com.zhicall.majordomo.core.common.enums.YesOrNo;
import com.zhicall.majordomo.core.security.annotation.Login;
import com.zhicall.majordomo.core.security.constant.Cst;
import com.zhicall.majordomo.core.security.util.UserAuthHelper;

public class UserLoginInterceptor extends HandlerInterceptorAdapter {

@SuppressWarnings({ "unchecked", "rawtypes" })
protected RedisTemplate<String, String> redisTemplate = (RedisTemplate) BeanFactory.getInstance().getBean("redisTemplate");

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    HandlerMethod handlerMethod = (HandlerMethod) handler;
    Login login = handlerMethod.getMethodAnnotation(Login.class);
    // 方法被 @Login(YesOrNo.No)标记 表示不需要登陆即可访问 否者都要登录
    if (login != null && YesOrNo.NO.equals(login.value())) {
        return true;
    }
    // 做鉴权
    ......
}

}

相关文章
|
5月前
|
机器学习/深度学习 SQL 人工智能
别再群发拜年消息了!三步微调AI,让它学会你的“独家语气”
每逢春节,通用AI祝福总显生硬空洞。本文探讨如何通过微调(LoRA),将“人情世故”转化为结构化数据(称呼/关系/细节/风格等),让AI真正学会你的语气与记忆,生成有温度、带梗、专属的个性化祝福——技术不是替代表达,而是帮你把来不及说的情意,说得恰到好处。(239字)
506 16
别再群发拜年消息了!三步微调AI,让它学会你的“独家语气”
|
2月前
|
人工智能 运维 编译器
|
4月前
|
消息中间件 缓存 NoSQL
跑腿外卖系统开发高并发订单处理与系统稳定性设计
本文详解跑腿外卖系统高并发订单处理的核心方案:通过Redis缓存、RabbitMQ/Kafka消息队列、异步下单、智能骑手派单、订单状态机及限流熔断等技术,有效应对午晚高峰流量,保障订单不丢、派单及时、支付稳定,提升系统可靠性与扩展性。(239字)
egg 项目里编写基础的 GET 接口:使用 GET 请求参数获取
egg 项目里编写基础的 GET 接口:使用 GET 请求参数获取
371 0
egg 项目里编写基础的 GET 接口:使用 GET 请求参数获取
【数据结构】C--顺序表1.0版本(本文非常适合小白观看,已尽力详解,以及图解也是尽量列举)(下)
【数据结构】C--顺序表1.0版本(本文非常适合小白观看,已尽力详解,以及图解也是尽量列举)(下)
165 0
|
23天前
|
人工智能 安全 前端开发
钓鱼攻击超越勒索软件的成因解析与分层防御体系研究
英国2026年报告显示,钓鱼攻击以38%企业受害率、69%高破坏性评级,全面超越勒索软件成为首要网络威胁。本文基于权威数据,剖析AI赋能、PhaaS服务化等动因,提出技术—人员—流程—情报四层防御体系,并提供可落地的检测代码与闭环方案。(239字)
91 0
|
7月前
|
SQL XML 安全
自定义SQL
利用MyBatisPlus的Wrapper构建动态查询条件,结合自定义SQL实现灵活更新。例如,扣减指定ID用户的余额:通过LambdaQueryWrapper构造id in (1,2,4)条件,Mapper中使用@Param(&quot;ew&quot;)传入wrapper,在XML或注解SQL中通过${ew.customSqlSegment}注入条件片段,实现SQL拼接,兼顾安全与灵活性。(239字)
|
7月前
|
XML Java 数据库连接
引入MybatisPlus的起步依赖
MyBatisPlus官方提供了一站式Starter,集成MyBatis与MyBatisPlus全部功能,支持自动装配,可直接替代原生MyBatis依赖。引入`mybatis-plus-boot-starter`后,无需额外配置,简化开发流程,原MyBatis依赖可移除,提升效率。
|
算法 计算机视觉
通过CGAL将一个多边形剖分成Delaunay三角网
通过CGAL将一个多边形剖分成Delaunay三角网
431 0
|
存储 人工智能 自然语言处理
数字时代是什么意思
数字时代是什么意思
1944 1