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方法上添加注解
通常情况下,程序员编写在资源服务的controller方法时会使用注解指定此方法的权限标识。
1、查询课程列表方法
指定查询课程列表方法需要拥有course_find_list权限。

@PreAuthorize("hasAuthority('course_find_list')")
@Override
public QueryResult<CourseInfo> findCourseList(@PathVariable("page") int page,
@PathVariable("size") int size,
CourseListRequest courseListRequest)

在这里插入图片描述

2、课程计划查询方法
课程计划查询方法需要拥有course_teachplan_list权限。

    //当用户拥有course_teachplan_list权限时候方可访问此方法
    @PreAuthorize("hasAuthority('course_teachplan_list')")
    @Override
    @GetMapping("/teachplan/list/{courseId}")
    public TeachplanNode findTeachplanList(@PathVariable("courseId") String courseId) {
        return courseService.findTeachplanList(courseId);

    }

在这里插入图片描述

3、在资源服务(这里是课程管理)的ResourceServerConfig类上添加注解,激活方法上添加授权注解

//激活方法上的PreAuthorize注解
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)

在这里插入图片描述
在这里插入图片描述

2.4 方法授权测试

重启课程管理服务,测试上边两个方法。
使用postman测试,测试前执行登录,并且将jwt令牌添加到header。

1)Get 请求http://localhost:31200/course/courseview/5a795ac7dd573c04508f3a56
用户没有拥有course_courseview权限,所以无法正常访问
总结,只要用户拥有course_teachplan_list,course_pic_list这两个权限才能访问,但是当前用户没有course_courseview的访问权限,而且我们对courseview方法加了权限,所以无法访问
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. Get请求http://localhost:31200/course/teachplan/list/4028e581617f945f01617f9dabc40000
    控制器方法名前边加不加那句话都能访问。
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

由于用户没有查询课程列表方法的权限,所以无法正常访问,其它方法可以正常访问。
在这里插入图片描述

总结,只要用户拥有course_teachplan_list,course_pic_list这两个权限才能访问

    //使用静态的权限表示用户所拥有的权限
    user_permission.add("course_teachplan_list");//查询课程信息
    user_permission.add("course_pic_list");//图片查询

2.5 小结

方法授权步骤:
1、ResourceServerConfig类上添加注解,如下:

//激活方法上的PreAuthorize注解
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)

2、在方法添加授权注解

@PreAuthorize("hasAuthority('???')")

3、如果方法上不添加授权注解表示此方法不需要权限即可访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值