8. 授权

未匹配的标注

授权

一次检查多个权限

除了 @can Blade指令外,你知道可以用 @canany 指令一次检查多个权限吗?

@canany(['update', 'view', 'delete'], $post)
    // 当前用户可以修改,查看,或者删除帖子
@elsecanany(['create'], \App\Post::class)
    // 当前用户可以创建帖子
@endcanany

更多关于用户注册的事件

希望在新用户注册后执行一些操作? 转到 app/Providers/EventServiceProvider.php 和 添加更多的监听类,然后在 $event->user 对象中实现 handle() 方法。

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,

            // 您可以在这里添加任何Listener类
            // 在该类中使用handle()方法
        ],
    ];

你知道Auth::once()?

你可以用用户登录一个请求,使用方法 Auth::once()
不会使用任何会话或cookie,这意味着该方法在构建无状态API时可能很有帮助。

if (Auth::once($credentials)) {
    //
}

更改用户密码更新的API令牌

当用户的密码更改时,可以方便地更改用户的API令牌。

模型:

public function setPasswordAttribute($value)
{
    $this->attributes['password'] = $value;
    $this->attributes['api_token'] = Str::random(100);
}

覆盖超级管理员的权限

如果你已经定义了网关(Gates)但是又想要覆盖超级管理员的所有权限。 给超级管理员所有权限,你可以在 AuthServiceProvider.php 文件中用 Gate::before() 语句拦截网关(Gates)。

// 拦截任何一个网关,检查它是否是超级管理员
Gate::before(function($user, $ability) {
    if ($user->is_super_admin == 1) {
        return true;
    }
});

// 或者你使用一些权限包
Gate::before(function($user, $ability) {
    if ($user->hasPermission('root')) {
        return true;
    }
});

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/laravel-tips/8....

译文地址:https://learnku.com/docs/laravel-tips/8....

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~