黑马程序员技术交流社区

标题: 【郑州校区】传智健康项目讲义第九章 五 [打印本页]

作者: 我是楠楠    时间: 2019-11-13 15:10
标题: 【郑州校区】传智健康项目讲义第九章 五
【郑州校区】传智健康项目讲义第九章 五

1.3 显示用户名
前面我们已经完成了认证和授权操作,如果用户认证成功后需要在页面展示当前用户的用户名。Spring Security在认证成功后会将用户信息保存到框架提供的上下文对象中,所以此处我们就可以调用Spring Security框架提供的API获取当前用户的username并展示到页面上。
实现步骤:
第一步:在main.html页面中修改,定义username模型数据基于VUE的数据绑定展示用户名,发送ajax请求获取username
[AppleScript] 纯文本查看 复制代码
<script>
new Vue({
el: '#app',
data:{
username:null,//用户名
menuList:[]
},
created(){
//发送请求获取当前登录用户的用户名
axios.get('/user/getUsername.do').then((response)=>{
this.username = response.data.data;
});
}
});
</script>

[AppleScript] 纯文本查看 复制代码
<div class="avatar‐wrapper">
<img src="../img/user2‐160x160.jpg" class="user‐avatar">
<!‐‐展示用户名‐‐>
{{username}}
</div>

第二步:创建UserController并提供getUsername方法

[AppleScript] 纯文本查看 复制代码
package com.itheima.controller;
import com.itheima.constant.MessageConstant;
import com.itheima.entity.Result;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextImpl;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
//获取当前登录用户的用户名
@RequestMapping("/getUsername")
public Result getUsername()throws Exception{
try{
org.springframework.security.core.userdetails.User user =
(org.springframework.security.core.userdetails.User)
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
return new Result(true,
MessageConstant.GET_USERNAME_SUCCESS,user.getUsername());
}catch (Exception e){
return new Result(false, MessageConstant.GET_USERNAME_FAIL);
}
}
}

通过debug调试可以看到Spring Security框架在其上下文中保存的用户相关信息:








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2