spring aop 拦截业务方法,实现权限控制示例
发布时间 - 2026-01-10 22:31:46 点击率:次难点:aop类是普通的java类,session是无法注入的,那么在有状态的系统中如何获取用户相关信息呢,session是必经之路啊,获取session就变的很重要。思索很久没有办法,后来在网上看到了解决办法。

思路是:
i. SysContext 成员变量 request,session,response
ii. Filter 目的是给 SysContext 中的成员赋值
iii.然后在AOP中使用这个SysContext的值
要用好,需要理解 ThreadLocal和 和Filter 执行顺序
1.aop获取request,response,session等
public class SysContext {
private static ThreadLocal<HttpServletRequest> requestLocal=new ThreadLocal<HttpServletRequest>();
private static ThreadLocal<HttpServletResponse> responseLocal=new ThreadLocal<HttpServletResponse>();
public static HttpServletRequest getRequest(){
return requestLocalget();
}
public static void setRequest(HttpServletRequest request){
requestLocalset(request);
}
public static HttpServletResponse getResponse(){
return responseLocalget();
}
public static void setResponse(HttpServletResponse response){
responseLocalset(response);
}
public static HttpSession getSession(){
return (HttpSession)(getRequest())getSession();
}
}
2.添加过滤器
public class GetContextFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
SysContextsetRequest((HttpServletRequest)request);
SysContextsetResponse((HttpServletResponse)response);
chaindoFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
}
}
3.配置web.xml
将这部分放置在最前面,这样可以过滤到所有的请求
<filter> <filter-name>sessionFilter</filter-name> <filter-class>comuneifilterGetContextFilter</filter-class> </filter> <filter-mapping> <filter-name>sessionFilter</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
4.spring aop before
从session中取出用户名,如果不存在,抛出异常跳转,将错误信息放到request中
@Aspect
public class AdminAspect {
ActionContext context = ActionContextgetContext();
HttpServletRequest request;
HttpServletResponse response;
@Before("execution(* comuneiActionAdminActiongetPrivileges())")
public void adminPrivilegeCheck()
throws Throwable {
HttpSession session = SysContextgetSession();
request = SysContextgetRequest();
response = SysContextgetResponse();
String userName = "";
try {
userName = sessiongetAttribute("userName")toString();
if(userName==null||userNameequals(""))
throw new Exception("no privilege");
} catch (Exception ex) {
requestsetAttribute("msg", "{\"res\":\"" + "无权限" + "\"}");
try {
requestgetRequestDispatcher("/jsp/jsonjsp")forward(
request, response);
} catch (ServletException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
5.applicationContext.xml
<bean id="adminAspect" class="comuneiaopAdminAspect"></bean>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# aop实现权限控制
# spring
# aop
# 权限
# aop权限控制
# Spring AOP拦截-三种方式实现自动代理详解
# 详解SpringBoot AOP 拦截器(Aspect注解方式)
# spring boot如何使用spring AOP实现拦截器
# 详解spring面向切面aop拦截器
# 详解Spring AOP 拦截器的基本实现
# spring 重复注解和aop拦截的实现示例
# 很久
# 这部
# 必经之路
# 要用
# 不存在
# 很重要
# 相关信息
# 没有办法
# 跳转
# 错误信息
# 解决办法
# 抛出
# 使用这个
# 最前面
# 大家多多
# 看到了
# 在网上
# 目的是
# return
# getRequest
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何获取上海专业网站定制建站电话?
如何用美橙互联一键搭建多站合一网站?
C#如何调用原生C++ COM对象详解
如何快速搭建自助建站会员专属系统?
EditPlus中的正则表达式 实战(1)
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
如何在云主机快速搭建网站站点?
如何在香港服务器上快速搭建免备案网站?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
如何在阿里云虚拟主机上快速搭建个人网站?
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Laravel如何使用.env文件管理环境变量?(最佳实践)
黑客如何通过漏洞一步步攻陷网站服务器?
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何破解联通资金短缺导致的基站建设难题?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
微信小程序 配置文件详细介绍
如何在阿里云高效完成企业建站全流程?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
如何用免费手机建站系统零基础打造专业网站?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Laravel如何生成URL和重定向?(路由助手函数)
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
简历在线制作网站免费版,如何创建个人简历?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
JavaScript常见的五种数组去重的方式
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Laravel用户密码怎么加密_Laravel Hash门面使用教程
佛山企业网站制作公司有哪些,沟通100网上服务官网?
简历没回改:利用AI润色让你的文字更专业
iOS UIView常见属性方法小结
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel如何保护应用免受CSRF攻击?(原理和示例)
网站制作壁纸教程视频,电脑壁纸网站?
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
Android滚轮选择时间控件使用详解
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
JavaScript中的标签模板是什么_它如何扩展字符串功能
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
如何登录建站主机?访问步骤全解析

