【工具类】当前登陆用户 UserContext

2.4.UserContext保存登录用户

2.4.1.为什么需要

//以下获取当前登录用户存在问题如下:
//1 到处都散落获取当前登录用户代码
//2 以后不用shiro所有的地方都要改变
//解决方案:封装一个方法获取当前登录用户,以后变了只需要修改这个方法就ok了
Subject currentUser = SecurityUtils.getSubject();
Object loginUser = currentUser.getSession().getAttribute(“loginUser”);

2.4.2.怎么实现

package cn.itsource.shiro.util;

import cn.itsource.domain.Employee;
import org.apache
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要设置 RestTemplate 的全局请求头为当前登录用户对应信息,你需要在每次发起请求时动态地获取当前登录用户对应信息,并将其设置到请求头中。 一种比较常见的做法是使用 ThreadLocal 存储用户信息,在拦截器中获取该信息并设置到请求头中。具体步骤如下: 1. 创建一个存储用户信息的 ThreadLocal 对象: ``` public class UserContextHolder { private static final ThreadLocal<String> userContext = new ThreadLocal<>(); public static String getUserContext() { return userContext.get(); } public static void setUserContext(String user) { userContext.set(user); } public static void clear() { userContext.remove(); } } ``` 2. 在拦截器中获取当前登录用户对应信息并设置到请求头中: ``` public class UserContextInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 获取当前登录用户对应信息 String user = getCurrentUser(); // 将用户信息设置到请求头中 request.getHeaders().add("X-User-Id", user); // 存储用户信息到 ThreadLocal 中 UserContextHolder.setUserContext(user); return true; } private String getCurrentUser() { // TODO: 实现获取当前登录用户对应信息的逻辑 } } ``` 3. 在 RestTemplate 中添加拦截器: ``` public class RestTemplateConfig { @Bean public RestTemplate restTemplate() { RestTemplate restTemplate = new RestTemplate(); // 添加拦截器 restTemplate.setInterceptors(Collections.singletonList(new UserContextInterceptor())); return restTemplate; } } ``` 这样,每次使用 RestTemplate 发起请求时,就会自动将当前登录用户对应信息设置到请求头中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值