使用Laravel怎么实现一个用户授权系统(laravel,开发技术)

时间:2024-05-03 22:58:22 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    %E4%BD%BF%E7%94%A8Laravel%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83%E7%B3%BB%E7%BB%9F

首先两个概念分清楚:

用户身份认证 Authentication - 处理用户登录, 退出, 注册, 找回密码, 重置密码, 用户邮箱认证 etc..

权限管理 Authorization - 负责 用户 与 权限, 用户组 三者之间的对应, 以及管理.

下面话不多说了,来一起看看详细的介绍吧

基本用法

示例

第一个参数 $ability,表示具备什么权限。第二个参数 $post,是一个模型实例。

不需指定模型的动作,比如 create,不需要指定的模型。第二个参数传一个类名。如:

使用的场景有:控制器辅助方法,中间件,Blade模板,User 模型的 can 和 can't 方法。

authorize方法:

有两种方式实现用户授权

Gates

编写 Gates

一般在 app\Providers\AuthServiceProvider 的 boot 方法中定义。

第一个参数是权限的名称,第二个参数是满足权限的条件,可以是闭包,控制器方法。

授权动作

allows 和 denies 两种方法,表示允许和否定。

第一个参数是权限的名称,第二个参数是模型,可以为空。这里不需要传入用户,框架会自动处理。

如果需要指定特定用户,可以使用 Gate Facade 中的 forUser 方法:

策略

生成策略

artisan 命令:

也可以指定 model,生成包含 CURD 的策略方法。

注册策略

在 AuthServiceProvider 的 policies 属性,可以将模型和策略对应起来。如:

策略方法

策略方法,就是权限名称,$this->authorize(‘update', $post) 的第一个参数就对应同名的策略方法,第二个参数 $post 代表它是一个 Post 模型,框架会根据参数判断采用 Post::class => PostPolicy::class 这个策略。

当 authorize 方法调用的时候,实际上会自动注入 User 和 Post 类型的两个参数,也因此使用授权系统必须是用户登录的情况下。

使用策略也不一定要和模型绑定,比如这样也可以:

这个 aaa 字符串对应策略类为 TravelPolicy::class,在控制器使用 authorize 判断授权:

此时也是可行的,第二个参数这个时候就必须是字符串 aaa 了,然后 authorize 方法只会自动注入 User 参数。

本文:使用Laravel怎么实现一个用户授权系统的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何使用PHP创建和编辑Excel表格下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18