过滤器匹配

简介: 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;
    }
    // 做鉴权
    ......
}

}

相关文章
|
6月前
|
机器学习/深度学习 SQL 人工智能
别再群发拜年消息了!三步微调AI,让它学会你的“独家语气”
每逢春节,通用AI祝福总显生硬空洞。本文探讨如何通过微调(LoRA),将“人情世故”转化为结构化数据(称呼/关系/细节/风格等),让AI真正学会你的语气与记忆,生成有温度、带梗、专属的个性化祝福——技术不是替代表达,而是帮你把来不及说的情意,说得恰到好处。(239字)
575 16
别再群发拜年消息了!三步微调AI,让它学会你的“独家语气”
|
3月前
|
人工智能 运维 编译器
|
5月前
|
消息中间件 缓存 NoSQL
跑腿外卖系统开发高并发订单处理与系统稳定性设计
本文详解跑腿外卖系统高并发订单处理的核心方案:通过Redis缓存、RabbitMQ/Kafka消息队列、异步下单、智能骑手派单、订单状态机及限流熔断等技术,有效应对午晚高峰流量,保障订单不丢、派单及时、支付稳定,提升系统可靠性与扩展性。(239字)
【数据结构】C--顺序表1.0版本(本文非常适合小白观看,已尽力详解,以及图解也是尽量列举)(下)
【数据结构】C--顺序表1.0版本(本文非常适合小白观看,已尽力详解,以及图解也是尽量列举)(下)
181 0
|
2月前
|
人工智能 安全 前端开发
钓鱼攻击超越勒索软件的成因解析与分层防御体系研究
英国2026年报告显示,钓鱼攻击以38%企业受害率、69%高破坏性评级,全面超越勒索软件成为首要网络威胁。本文基于权威数据,剖析AI赋能、PhaaS服务化等动因,提出技术—人员—流程—情报四层防御体系,并提供可落地的检测代码与闭环方案。(239字)
131 0
|
8月前
|
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字)
|
8月前
|
XML Java 数据库连接
引入MybatisPlus的起步依赖
MyBatisPlus官方提供了一站式Starter,集成MyBatis与MyBatisPlus全部功能,支持自动装配,可直接替代原生MyBatis依赖。引入`mybatis-plus-boot-starter`后,无需额外配置,简化开发流程,原MyBatis依赖可移除,提升效率。
|
8月前
|
缓存 安全 Java
线程池初始化严禁使用Executors
阿里巴巴规范禁止使用Executors创建线程池,因其默认队列无界(如LinkedBlockingQueue)或线程数过多,易导致OOM。推荐使用ThreadPoolExecutor自定义参数,或结合Guava工具设置有界队列、合理线程数及拒绝策略,避免内存溢出并提升可维护性。
|
算法 计算机视觉
通过CGAL将一个多边形剖分成Delaunay三角网
通过CGAL将一个多边形剖分成Delaunay三角网
451 0
|
存储 人工智能 运维
裸金属服务器详解:定义、核心特点与应用
裸金属服务器,又称单租户环境物理服务器,是指由一个或多个独立的服务器组成,提供专属的物理计算资源。它是服务器领域的一个创新产物,结合了虚拟机的弹性和物理机的性能优势,成为云端的一个专用物理服务器。裸金属服务器在硬件层面直接提供计算资源,不经过虚拟化层,从而避免了虚拟化带来的性能损耗,为用户提供了极致的计算性能和资源独占性。

热门文章

最新文章