# JavaEE3-Experiment4 **Repository Path**: shallowcmz/JavaEE3-Experiment4 ## Basic Information - **Project Name**: JavaEE3-Experiment4 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

实验四

课程名称:企业级开发框架专题

学期:2020春季

实验名称基于Spring Security码云OAuth2认证实验序号
姓 名陈铭昭学 号201741404152班 级17软卓1班
实验地点网上实验日期2020/5/18指导老师黎志雄
教师评语***实验成绩 评阅教师
百分制**
同组同学
# 实验目标 1、 掌握使用Spring Security框架;
2、 掌握配置Spring Security的安全过滤链;
3、 掌握编写Spring Security单元测试;
4、 掌握创建接入码云的应用;
5、 掌握码云OAuth2认证基本流程;
6、 掌握使用码云API;
7、 了解使用模板引擎或前端框架制作用户登录界面。
# 实验内容(及步骤): 1、创建接入码云的应用。
![avatar](./image/1.png)
将上面获取到的client_id以及client_secret填入
![avatar](./image/2.png)
2、编写重定向过滤器的业务逻辑。
先创建一个uri对象,然后调用response的sendRedirect方法重定向
![avatar](./image/3.png)
3、使用码云access_token API向码云认证服务器发送post请求获取access_token。
先创建一个uri对象,然后利用restTemplate向gitee官方发送post请求并获取返回的json,将其解析后得到accessToken
![avatar](./image/4.png)
4、使用码云API获取授权用户的资料。
先创建一个uri对象,然后利用restTemplate向gitee发送get请求并获取返回的用户信息,然后将json解析后返回 ![avatar](./image/5.png)
5、 把自定义的两个Filter加进安全过滤链。
![avatar](./image/6.png)
6、 把我们自定义的SecurityConfigurer应用到安全过滤链。
![avatar](./image/7.png)
7、 改造/user接口,返回码云用户资料给前端;改造user.ftlh模板用于显示用户资料。
先从SecurityContextHolder中拿到SecurityContext,然后再从SecurityContext中拿到验证成功后的Authentication,最后通过getPrincipal得到User对象 ![avatar](./image/8.png)
改写user.ftlh,使其可以显示用户的用户名:
![avatar](./image/9.png)
8、 编写单元测试。模拟一个登录用户,访问受保护的接口/test,断言接口的返回内容body部分是否一致。
先通过带有beforeEach注解的init方法将mvc初始化
![avatar](./image/10.png)
使用withMockUser模拟一个用户,然后向/test发送get请求,获取内容,可以看到测试通过
![avatar](./image/11.png)
# 实验结果 实验结果展示: ![avatar](./image/12.png)
![avatar](./image/13.png)
![avatar](./image/14.png)