为了账号安全,请及时绑定邮箱和手机立即绑定

对RBAC的提问

你好,老师。关于RBAC有两个问题,需要请教一下你

  1. 你在视频过程中,说,对于一个权限可以有多个URLS的问题

  2. 对于RBAC更好的表达,我觉得,如果有该权限,则显示菜单或者按钮,没有则不显示,如果强行访问没有权限的菜单,则再进行警告页面提示。但是关于显示的问题,不知道老师你是怎么解决的呢?我百思不得解

正在回答

4 回答

关于第二个问题,我给你讲解一种我用的方法,你看看能否对你有点帮助,我们在BaseController中有个 checkPrivilege 方法,

假如我们有个业务 还是 客户列表页面, 在客户列表有个添加按钮(按钮的链接指向是 /account/set),

这个时候我们如何来控制这个按钮是否显示?你在 对应controller的action 方法中  这么写

$set_flag = $this->checkPrivilege( " /account/set" );//判断是否有 添加的权限

在view页面,我们就 

<?php if( $set_flag):?>
添加按钮
<?php endif;?>


希望对你有所帮助 ,

0 回复 有任何疑惑可以回复我~
#1

Windcx 提问者

利用这个方法进行判断是否有权限的话,如果一个显示页面有多个操作的话,就需要多个flag进行判断了,是这个思路吧?
2017-02-19 回复 有任何疑惑可以回复我~
#2

编程浪子 回复 Windcx 提问者

是的。既然你问了,我相信你发现了一个问题,那就是如果一个页面有很多操作的时候,是不是会多出很多个flag 变量,你可以想想如何让很多歌flag变量看起来更优雅些
2017-02-19 回复 有任何疑惑可以回复我~
#3

Windcx 提问者 回复 编程浪子

使用一个以方法url为键值,初始值为0的url数组,然后判断之后重新赋值为1或0,视图再根据这些url的对应值去判断是否显示该权限。$url_arr = ['test/add'=>0,'test/edit'=>0,'test/delete'=>0]; 判断用$url_arr[$key] = $this->checkPrivilege( $key ) ? 1 : $value;//判断是否有 添加的权限
2017-02-20 回复 有任何疑惑可以回复我~

最后 我发现你是个非常喜欢思考的,希望你坚持这点,你思考的越多你思考问题会更深层次,这也是优秀研发必备的一种能力

0 回复 有任何疑惑可以回复我~
#1

Windcx 提问者

谢谢老师,多数情况下,一个需求也不是只有一个实现方式,所以多想想实现的可能性。但是性能优化上需要多学学才行
2017-02-19 回复 有任何疑惑可以回复我~
#2

编程浪子 回复 Windcx 提问者

性能问题 我建议可以从内部多了解一些函数的结构,并看一些算法书籍
2017-02-19 回复 有任何疑惑可以回复我~

关于第一个问题,我来给你一个举例一个业务场景,有个权限叫做客户列表,但是客户列表中的有一部分数据显示我们在客户列表通过ajax去获取的(例如客户的消费总金额),那么如果只给权限配置一个 客户列表的url,这时候 关于ajax请求的这部分数据就没有权限,等于客户列表的权限其实默认 就要关联  ajax的这个url。

例如 客户列表 url 是  /account/list, 而ajax获取消费总金额的url 是 /account/money

那么配置的这个权限 就是 2个url一起配置, /account/list 和 /account/money

其实当你给客户配置某个页面访问权限的时候,可能这个页面还有关联功能,这样就有了多个链接的问题



0 回复 有任何疑惑可以回复我~
#1

Windcx 提问者

老师的意思是,客户列表的方法用list表示,然而显示页面中,数据显示会涉及到其他方法的urls,这个时候,虽然同在客户列表的页面中,同一个权限名称,但是必须是多个方法的url地址咯?
2017-02-19 回复 有任何疑惑可以回复我~
#2

编程浪子 回复 Windcx 提问者

是的,其实还有一些实例,例如一个人有添加客户的权限,是不是就有查看这个客户详情的权限,这是一种权限打包的方法,就是当我有某个权限的时候,其实隐含的我就应该有某个其他权限,这种在业务也是非常常见的
2017-02-19 回复 有任何疑惑可以回复我~

浪子牛逼!!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

对RBAC的提问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信