本文实例讲述了laravel框架创建授权策略。分享给大家供大家参考,具体如下:
在完成对未登录用户的限制之后,接下来我们要限制的是已登录用户的操作,当 id 为 1 的用户去尝试更新 id 为 2 的用户信息时,我们应该返回一个 403 禁止访问的异常。在 laravel 中可以使用授权策略 (policy)来对用户的操作权限进行验证,在用户未经授权进行操作时将返回 403 禁止访问的异常。
我们可以使用以下命令来生成一个名为urpolicy
的授权策略类文件,用于管理用户模型的授权。
php artisan make:policy urpolicy
所有生成的授权策略文件都会被放置在app/policies
文件夹下。
让我们为默认生成的用户授权策略添加update
方法,用于用户更新时的权限验证。
app/policies/urpolicy.php
update
方法接收两个参数,第一个参数默认为当前登录用户实例,第二个参数则为要进行授权的用户实例。当两个 id 相同时,则代表两个用户是相同用户,用户通过授权,可以接着进行下一个操作。如果 id 不相同的话,将抛出 403 异常信息来拒绝访问。
使用授权策略需要注意以下两点:
我们并不需要检查$currentur
是不是 null。未登录用户,框架会自动为其所有权限返回fal
;调用时,默认情况下,我们不需要传递当前登录用户至该方法内,因为框架会自动加载当前登录用户(接着看下去,后面有例子)。laravel 提供两种注册授权策略的方式,第一种是手动指定,第二种是 laravel 5.8 新增功能 —— 自动授权注册。为了方便起见,我们会使用第二种。
自动授权默认会假设 model 模型文件直接存放在app
目录下,鉴于我们已将模型存放目录修改为app/models
,接下来还需自定义自动授权注册的规则,修改boot()
方法:
app/providers/authrviceprovider.php
授权策略定义完成之后,我们便可以通过在用户控制器中使用authori射脚ze
方法来验证用户授权策略。默认的app\http\controllers\controller
类包含了 laravel 的authorizesrequests
trait。此 trait 旅游去哪里好玩提供了authorize
方法,它可以被用于快速授权一个指定的行为,当无权限运行该行为时会抛出 httpexception。aut洋务运动horize
方法接收两个参数,第一个为授权策略的名称,第二个为进行授权验证的数据。
我们需要为edit
和update
方法加上这行:
这里update
是指授权类里的update
授权方法,$ur
对应传参update
授权方法的第二个参数。正如上面定义update
授权方法时挖出大蛇候提起的,调用时,默认情况下,我们不需要传递第一个参数,也就是当前登录用户至该方法内,因为框架会自动加载当前登录用户。
书写的位置如下:
app/http/controllers/urscontroller.php
本文发布于:2023-04-08 05:27:52,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/7cc46787241b91ea965c86fddb93a936.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:laravel框架创建授权策略实例分析.doc
本文 PDF 下载地址:laravel框架创建授权策略实例分析.pdf
留言与评论(共有 0 条评论) |