3 细粒度授权 3.1 需求分析
什么是细粒度授权?
细粒度授权也叫数据范围授权,即不同的用户所拥有的操作权限相同,但是能够操作的数据范围是不一样的。一个 例子:用户A和用户B都是教学机构,他们都拥有“我的课程”权限,但是两个用户所查询到的数据是不一样的。
本项目有哪些细粒度授权?
比如:
我的课程,教学机构只允许查询本教学机构下的课程信息。
我的选课,学生只允许查询自己所选课。
如何实现细粒度授权?
细粒度授权涉及到不同的业务逻辑,通常在service层实现,根据不同的用户进行校验,根据不同的参数查询不同的 数据或操作不同的数据。
3.3 我的课程细粒度授权
3.3.1 需求分析
1、我的课程查询,细粒度授权过程如下: 1)获取当前登录的用户Id 2)得到用户所属教育机构的Id
3)查询该教学机构下的课程信息
最终实现了用户只允许查询自己机构的课程信息。
2、修改课程管理服务“我的课程”的功能,根据公司Id查询课程,思路如下:
1)修改Dao,支持根据公司Id 查询课程。 2)修改Service,将公司Id传入Dao。
3)修改Controller,获取当前用户的公司Id,传给Service。 3、数据模型分析如下: 1)课程表
在xc_course数据库的course_base 表中添加company_id字段,来表示此课程的归属
通过xc_company_user表可得到用户的所属公司Id。
如何查询某个用户的课程?
1、确定用户的Id
2、根据用户的Id查询用户归属的公司。
3、根据公司Id查询该公司下的课程信息
一个例子:
[mw_shl_code=applescript,true]/确定用户的id:49/
/根据用户Id查找所属公司/ SELECT
company_id FROM xc_user.xc_company_user WHERE user_id = '49'
/根据公司查询所拥有的课程/ SELECT * FROM xc_course.course_base
WHERE company_id = '1'[/mw_shl_code]