day18 用户授权
feng_fly_28
这个作者很懒,什么都没留下…
展开
-
19-微服务之间认证-Feign 拦截器
4.2 Feign 拦截器4.2.1 定义Feign拦截器微服务之间使用feign进行远程调用,采用feign拦截器实现远程调用携带JWT。在common工程添加依赖:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring‐cloud‐starter‐openfeign</artifactId></dependency>在C原创 2021-09-03 17:12:30 · 560 阅读 · 0 评论 -
18-微服务之间认证-需求分析
4 微服务之间认证4.1 需求分析前边章节已经实现了用户携带身份令牌和JWT令牌访问微服务,微服务获取jwt并完成授权。当微服务访问微服务,此时如果没有携带JWT则微服务会在授权时报错。测试课程预览:1、将课程管理服务和CMS全部添加授权配置2、用户登录教学管理前端,进入课程发布界面,点击课程发布,观察课程管理服务端报错如下:feign.FeignException: status 401 reading CmsPageClient#save(CmsPage); content:原创 2021-09-03 16:15:08 · 114 阅读 · 0 评论 -
17-细粒度授权-获取当前用户信息
3.4 获取当前用户信息3.4.1需求分析要想实现只查询自己的课程信息则需要获取当前用户所属的企业id。1、认证服务在用户认证通过将用户所属公司id等信息存储到jwt令牌中。2、用户请求到达资源服务后,资源服务需要取出header中的jwt令牌,并解析出用户信息。3.4.2 jwt令牌包括企业Id资源服务在授权时需要用到用户所属企业ID,需要实现认证服务生成的JWT令牌中包括用户所属公司id信息。查看认证服务UserDetailServiceImpl代码如下:......//用户idus原创 2021-09-02 17:57:47 · 145 阅读 · 0 评论 -
16-细粒度授权-我的课程细粒度授权-测试
3.3.5 测试1、用户登录由于使用了静态数据companyId为1,所以要使用企业编号为1的下边的用户去登录。2、进入我的课程,查看数据是否正确。观察所查询到的课程是该企业下的课程。原创 2021-09-02 17:12:20 · 72 阅读 · 0 评论 -
15-细粒度授权-我的课程细粒度授权-实现
3.3.2 Api定义我的课程查询接口如下:public QueryResponseResult<CourseInfo> findCourseList(int page, int size, CourseListRequest courseListRequest);3.3.3 Dao修改 CourseMapper.xml的查询课程列表,添加companyId条件。<select id="findCourseListP原创 2021-09-02 17:03:26 · 98 阅读 · 0 评论 -
13-细粒度授权-细粒度授权介绍,需求分析
3 细粒度授权3.1 需求分析什么是细粒度授权?细粒度授权也叫数据范围授权,即不同的用户所拥有的操作权限相同,但是能够操作的数据范围是不一样的。一个例子:用户A和用户B都是教学机构,他们都拥有“我的课程”权限,但是两个用户所查询到的数据是不一样的。本项目有哪些细粒度授权?比如:我的课程,教学机构只允许查询本教学机构下的课程信息。我的选课,学生只允许查询自己所选课。如何实现细粒度授权?细粒度授权涉及到不同的业务逻辑,通常在service层实现,根据不同的用户进行校验,根据不同的参数查询不同原创 2021-09-02 16:16:32 · 513 阅读 · 0 评论 -
12-前端集成认证授权-携带JWT授权
5.3 测试1、配置代理通过nginx转发到gateway,在www.xuecheng.com虚拟主机来配置#微服务网关upstream api_server_pool{server 127.0.0.1:50201 weight=10;}#微服务网关location /api {proxy_pass http://api_server_pool;}使用postman测试:Get请求:http://www.xuecheng.com/api/course/coursebase/ge原创 2021-08-23 15:51:49 · 132 阅读 · 0 评论 -
12-前端集成认证授权-携带JWT授权
2、在base/api/system.js中添加getjwt方法/*获取jwt令牌*/export const getjwt= () => {return http.requestQuickGet('/openapi/auth/userjwt')}3、在utils.js中添加 如下方法getActiveUser: function(){let uid = this.getCookie("uid")if(uid){let activeUserStr = this.getUserSe.原创 2021-09-02 16:05:29 · 754 阅读 · 0 评论 -
11-前端集成认证授权-身份校验
4.2教学管理中心本节实现教学管理中心实现身份校验,其它前端参考教学管理中心实现。4.2.1 配置虚拟主机教学管理前端访问微服务统一在访问地址前添加/api前缀并经过网关转发到微服务。配置teacher.xuecheng.com虚拟主机。#前端教学管理upstream teacher_server_pool{server 127.0.0.1:12000 weight=10;}#文件服务upstream filesystem_server_pool{server 127.0.0.1:22原创 2021-09-02 15:18:11 · 134 阅读 · 0 评论 -
10-前端集成认证授权-需求分析
4 前端集成认证授权4.1 需求分析截至目前认证授权服务端的功能已基本完成,本章实现前端集成认证授权功能。前端集成认证授权功能需要作如下工作:1、前端页面校验用户的身份,如果用户没有登录则跳转到登录页面2、前端请求资源服务需要在http header中添加jwt令牌,资源服务根据jwt令牌完成授权。哪些功能需要前端请求时携带JWT?用户登录成功请求资源服务都需要携带jwt令牌,因为资源服务已经实现了jwt认证,如果校验头部没有jwt则会认为身份不合法。...原创 2021-09-01 16:45:46 · 121 阅读 · 0 评论 -
09-动态查询用户的权限-认证服务查询用户权限
3.4 认证服务查询用户权限修改认证服务的UserDetailServiceImpl,查询用户的权限,并拼接权限串,将原来硬编码权限代码删除,代码如下:......//请求ucenter查询用户XcUserExt userext = userClient.getUserext(username);if(userext == null){//返回NULL表示用户不存在,Spring Security会抛出异常return null;}//从数据库查询用户正确的密码,Spring Secur原创 2021-08-31 18:07:28 · 123 阅读 · 0 评论 -
08-动态查询用户的权限-用户中心查询用户权限
3.3 用户中心查询用户权限3.3.1 需求分析认证服务请求用户中心查询用户信息,用户需要将用户基本信息和用户权限一同返回给认证服务。本小节实现用户查询查询用户权限,并将用户权限信息添加到的用户信息中返回给认证服务。以上需求需要修改如下接口:@GetMapping("/getuserext")public XcUserExt getUserext(@RequestParam("username") String username);3.3.2 DAO在用户中心服务中编写dao,实现根据用户原创 2021-08-31 16:20:40 · 236 阅读 · 0 评论 -
07-动态查询用户权限-权限数据模型
3 动态查询用户权限3.1 需求分析截至目前在测试授权时使用的权限数据是静态数据,正常情况的流程是:1、管理员给用户分配权限,权限数据写到数据库中。2、认证服务在进行用户认证时从数据库读取用户的权限数据(动态数据)本节实现动态权限数据。3.2 权限数据模型3.2.1 数据模型结构打开xc_user数据库,找到下边的表:xc_user:用户表,存储了系统用户信息,用户类型包括:学生、老师、管理员等xc_role:角色表,存储了系统的角色信息,学生、老师、教学管理员、系统管理员等。xc_原创 2021-08-31 16:07:17 · 197 阅读 · 0 评论 -
06-方法授权-方法授权测试-无权限异常处理
在各自微服务里自定义异常处理原创 2021-08-31 15:48:35 · 56 阅读 · 0 评论 -
04-方法授权-方法授权实现
2.3 方法授权实现2.3.1资源服务添加授权控制1、要想在资源服务使用方法授权,首先在资源服务配置授权控制1)添加spring-cloud-starter-oauth2依赖。2)拷贝授权配置类ResourceServerConfig。3)拷贝公钥。2.3.2方法上添加注解通常情况下,程序员编写在资源服务的controller方法时会使用注解指定此方法的权限标识。1、查询课程列表方法指定查询课程列表方法需要拥有course_find_list权限。2.3.2方法上添加注解通常情况原创 2021-08-27 18:03:04 · 192 阅读 · 0 评论 -
03-方法授权-jwt令牌包含权限
2.2 jwt令牌包含权限修改认证服务的UserDetailServiceImpl类,下边的代码中 permissionList列表中存放了用户的权限,并且将权限标识按照中间使用逗号分隔的语法组成一个字符串,最终提供给Spring security。......//指定用户的权限,这里暂时硬编码List<String> permissionList = new ArrayList<>();permissionList.add("course_get_baseinfo");原创 2021-08-27 15:49:45 · 392 阅读 · 0 评论 -
02-方法授权-需求分析
2 方法授权2.1需求分析方法授权要完成的是资源服务根据jwt令牌完成对方法的授权,具体流程如下:1、生成Jwt令牌时在令牌中写入用户所拥有的权限我们给每个权限起个名字,例如某个用户拥有如下权限:course_find_list:课程查询course_pic_list:课程图片查询2、在资源服务方法上添加注解PreAuthorize,并指定此方法所需要的权限例如下边是课程管理接口方法的授权配置,它就表示要执行这个方法需要拥有course_find_list权限。@PreAuthorize(原创 2021-08-23 16:05:06 · 71 阅读 · 0 评论 -
01-用户授权业务流程分析
1 用户授权业务流程用户授权的业务流程如下:业务流程说明如下:1、用户认证通过,认证服务向浏览器cookie写入token( 身份令牌)2、前端携带token请求用户中心服务获取jwt令牌前端获取到jwt令牌解析,并存储在sessionStorage3、前端携带cookie中的身份令牌及jwt令牌访问资源服务前端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是http header中的jwt前端请求资源服务前在http header上添加jwt请求资源4、网关校原创 2021-08-23 15:59:47 · 294 阅读 · 0 评论