学成在线-第18天-讲义-用户授权1用户授权业务流程用户授权的业务流程如下:业务流程说明如下:1、用户认证通过,认证服务向浏览器cookie写入token(身份令牌)2、前端携带token请求用户中心服务获取jwt令牌前端获取到jwt令牌解析,并存储在sessionStorage3、前端携带cookie中的身份令牌及jwt令牌访问资源服务前端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是httpheader中的jwt前端请求资源服务前在httpheader上添加jwt请求资源4、网关校验token的合法性用户请求必须携带身份令牌和jwt令牌网关校验redis中user_token的有效期,已过期则要求用户重新登录5、资源服务校验jwt的合法性并进行授权资源服务校验jwt令牌,完成授权,拥有权限的方法正常执行,没有权限的方法将拒绝访问。北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90902方法授权2.1需求分析方法授权要完成的是资源服务根据jwt令牌完成对方法的授权,具体流程如下:1、生成Jwt令牌时在令牌中写入用户所拥有的权限我们给每个权限起个名字,例如某个用户拥有如下权限:course_find_list:课程查询course_pic_list:课程图片查询2、在资源服务方法上添加注解PreAuthorize,并指定此方法所需要的权限例如下边是课程管理接口方法的授权配置,它就表示要执行这个方法需要拥有course_find_list权限。3、当请求有权限的方法时正常访问4、当请求没有权限的方法时则拒绝访问2.2jwt令牌包含权限修改认证服务的UserDetailServiceImpl类,下边的代码中permissionList列表中存放了用户的权限,并且将权限标识按照中间使用逗号分隔的语法组成一个字符串,最终提供给Springsecurity。@PreAuthorize("hasAuthority('course_find_list')")@OverridepublicQueryResultfindCourseList(@PathVariable("page")intpage,@PathVariable("size")intsize,CourseListRequestcourseListRequest)......//指定用户的权限,这里暂时硬编码ListpermissionList=newArrayList<>();permissionList.add("course_get_baseinfo");permissionList.add("course_find_pic");//将权限串中间以逗号分隔StringpermissionString=StringUtils.join(permissionList.toArray(),",");//Stringuser_permission_string="";UserJwtuserDetails=newUserJwt(username,password,AuthorityUtils.commaSeparatedStringToAuthorityList(permissionString));//用户名称userDetails.setName(userext.ge...