本篇文章给大家分享的是有关怎么在laravel框架中创建一个授权策略,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联是一家集网站建设,石柱土家族企业网站建设,石柱土家族品牌网站建设,网站定制,石柱土家族网站建设报价,网络营销,网络优化,石柱土家族网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。1. 创建授权策略
我们可以使用以下命令来生成一个名为 UserPolicy
的授权策略类文件,用于管理用户模型的授权。
php artisan make:policy UserPolicy
所有生成的授权策略文件都会被放置在 app/Policies
文件夹下。
让我们为默认生成的用户授权策略添加 update
方法,用于用户更新时的权限验证。
app/Policies/UserPolicy.php
update
方法接收两个参数,第一个参数默认为当前登录用户实例,第二个参数则为要进行授权的用户实例。当两个 id 相同时,则代表两个用户是相同用户,用户通过授权,可以接着进行下一个操作。如果 id 不相同的话,将抛出 403 异常信息来拒绝访问。
使用授权策略需要注意以下两点:
我们并不需要检查 $currentUser
是不是 NULL。未登录用户,框架会自动为其 所有权限 返回 false
;
调用时,默认情况下,我们 不需要 传递当前登录用户至该方法内,因为框架会自动加载当前登录用户(接着看下去,后面有例子)。
Laravel 提供两种注册授权策略的方式,第一种是手动指定,第二种是 Laravel 5.8 新增功能 —— 自动授权注册。为了方便起见,我们会使用第二种。
自动授权默认会假设 Model 模型文件直接存放在 app
目录下,鉴于我们已将模型存放目录修改为 app/Models
,接下来还需自定义自动授权注册的规则,修改 boot()
方法:
app/Providers/AuthServiceProvider.php
授权策略定义完成之后,我们便可以通过在用户控制器中使用 authorize
方法来验证用户授权策略。默认的 App\Http\Controllers\Controller
类包含了 Laravel 的 AuthorizesRequests
trait。此 trait 提供了 authorize
方法,它可以被用于快速授权一个指定的行为,当无权限运行该行为时会抛出 HttpException。authorize
方法接收两个参数,第一个为授权策略的名称,第二个为进行授权验证的数据。
我们需要为 edit
和 update
方法加上这行:
这里 update
是指授权类里的 update
授权方法,$user
对应传参 update
授权方法的第二个参数。正如上面定义 update
授权方法时候提起的,调用时,默认情况下,我们 不需要 传递第一个参数,也就是当前登录用户至该方法内,因为框架会自动加载当前登录用户。
书写的位置如下:
app/Http/Controllers/UsersController.php
以上就是怎么在laravel框架中创建一个授权策略,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。