为什么要调用get_user函数

为什么要调用get_user函数

1 为什么要在其他函数中调用get_user函数

其他函数运行后,user.json也更着变了,get_user的数据是来自user.json,那说明get_user也跟着变了。一旦通过update_user_role更改了user的role,再执行其他的函数就报错了。


2 get_user中已经有判断role是否是admin的代码了,为什么还要在每个函数中添加相同的代码

if current_user.get('role') != 'admin':   raise RoleError('your role is not admin,so no permission')



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕美 2022-07-11 17:54:22

同学,你好!

1、若是修改了创建对象时传入的username(即self.username)对应的role值,则再调用其他方法时需要先调用get_user()方法进行相应的判断,若role不是admin,则是会报错的。

https://img1.sycdn.imooc.com//climg/62cbef8a090c584d14580156.jpg

修改其他用户是可以的,例:

https://img1.sycdn.imooc.com//climg/62cbf13c09dd4e9806360081.jpg

2、调用get_user()后不需要再次验证身份了,若不是管理员身份,在调用get_user()时会抛出异常,程序就结束了。方法中的条件判断也是可以去掉的。

祝学习愉快!

  • 提问者 呆呆桃 #1

    第一个问题没有明白。

    为什么修改其他用户可以呢。如果dewei是normal,再调用任何函数都会报错的。

    admin = Admin('dewei', user_path, gift_path)
    admin.update_user_role('zz', 'normal')
    
    common.error.RoleError: your role is not admin,so no permission


    2022-07-11 20:38:01
  • 好帮手慕美 回复 提问者 呆呆桃 #2

    同学,你好!在get_user()方法中是根据self.username获取到的current_user值,判断的是current_user中的role是否为admin,self.username的值是传入的'dewei',若dewei的role是normal,是会抛出异常报错的。

    https://img1.sycdn.imooc.com//climg/62ccd15d0900357110780651.jpg

    若dewei的role是admin,而在调用update_user_role()值修改其他用户时,get_user()方法中判断的还是'dewei'的role值,因此是可以的。

    https://img1.sycdn.imooc.com//climg/62ccd21009c551d108160191.jpg

    祝学习愉快!

    2022-07-12 09:47:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师