Spring Security获取已登录的用户信息的两种方法
2024-09-20 04:23:10
第一种是直接从session中手动拿:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public ResponseEntity<Map<String, Object>> getUser(HttpSession httpSession){
Authentication au;
CloudinsUser user = null;
CloudinsUserDetail userDetail;
String[] meta = new String[1];
SecurityContext ctx =
(SecurityContext) httpSession.getAttribute("SPRING_SECURITY_CONTEXT");
if(ctx!=null) {
au = ctx.getAuthentication();
userDetail = (CloudinsUserDetail) au.getPrincipal();
if (userDetail != null){
userDetail.setPassword("");
//userDetail直接转成json会报错,需要从中构造一个简单对象
user = userDetail.castToCloudinsUser();
meta[0] = "UserId:" +user.getId();
}
}
return SeverUtil.cacheResp(makeResMap(user,meta));
}
第二种是Spring Security提供的方法:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public ResponseEntity<Map<String, Object>> getUser(){
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
System.out.println(principal);
return null;
}
其中principal 也不能直接转化为json 转自:http://blog.163.com/xiong_jinhua/blog/static/236171063201712833519249/
最新文章
- 将已有项目提交到github/从github上pull到本地
- js007-函数表达式
- 纯css3实现旋转的太极图
- Java学习-001-JDK安装配置
- raspberry pi 如何汉化显示中文
- Android实例-拍摄和分享照片、分享文本(XE8+小米2)
- Apple Mach-O Linker Warning 警告解决的方法
- MVC+simpleinjector 简单使用
- MD5 .net与PHP加密值一样的加密代码
- XML实体解析器的作用
- windows 10隐藏各种文件夹
- pyenv global 设置失败 pyenv local 设置就成功了 不知道啥原因
- Android Studio帮助文档的安装及智能提示设置
- 使用PL/SQL能查询oracle中数据,在for update 语句中一直卡住
- nodejs中使用crypto-js先HmacSha1加密后转Base64
- 1.2 JAVA多线程实现
- 实现Github和Coding仓库等Git服务托管更新
- QML 从入门到放弃
- Ajax 执行顺序
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格动态加载