laravel框架创建授权策略实例分析
本文实例讲述了laravel框架创建授权策略。分享给大家供大家参考,具体如下
用户只能编辑自己的资料
在完成对未登录用户的限制之后,接下来我们要限制的是已登录用户的操作,当 id 为 1 的用户去尝试更新 id 为 2 的用户信息时,我们应该返回一个 403 禁止访问的异常。在 Laravel 中可以使用 来对用户的操作权限进行验证,在用户未经授权进行操作时将返回 403 禁止访问的异常。
1. 创建授权策略
我们可以使用以下命令来生成一个名为 UserPolicy
的授权策略类文件,用于管理用户模型的授权。
php artisan make:policy UserPolicy
所有生成的授权策略文件都会被放置在 app/Policies
文件夹下。
让我们为默认生成的用户授权策略添加 update
方法,用于用户更新时的权限验证。
app/Policies/UserPolicy.php
update
方法接收两个参数,第一个参数默认为当前登录用户实例,第二个参数则为要进行授权的用户实例。当两个 id 相,则代表两个用户是相同用户,用户通过授权,可以接着进行下一个操作。如果 id 不相同的话,将抛出 403 异常信息来拒绝访问。
使用授权策略需要注意以下两点
- 我们并不需要检查
$currentUser
是不是 NULL。未登录用户,框架会自动为其 所有权限 返回false
; - 调用时,默认情况下,我们 不需要 传递当前登录用户至该方法内,因为框架会自动加载当前登录用户(接着看下去,后面有例子)。
2. 注册授权策略
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相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》及《》
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程