除了 @can
Blade 指令外,你知道可以用 @canany
指令一次檢查多個權限嗎?
@canany(['update', 'view', 'delete'], $post)
// 當前用戶可以修改,查看,或者刪除帖子
@elsecanany(['create'], \App\Post::class)
// 當前用戶可以創(chuàng)建帖子
@endcanany
希望在新用戶注冊后執(zhí)行一些操作? 轉(zhuǎn)到 app/Providers/EventServiceProvider.php
和 添加更多的監(jiān)聽類,然后在 $event->user
對象中實現(xiàn) handle()
方法。
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
// 您可以在這里添加任何Listener類
// 在該類中使用handle()方法
],
];
你可以用用戶登錄一個請求,使用方法 Auth::once()
。
不會使用任何會話或 cookie,這意味著該方法在構建無狀態(tài) API 時可能很有幫助。
if (Auth::once($credentials)) {
//
}
當用戶的密碼更改時,可以方便地更改用戶的 API 令牌。
模型:
public function setPasswordAttribute($value)
{
$this->attributes['password'] = $value;
$this->attributes['api_token'] = Str::random(100);
}
如果你已經(jīng)定義了網(wǎng)關(Gates)但是又想要覆蓋超級管理員的所有權限。 給超級管理員所有權限,你可以在 AuthServiceProvider.php
文件中用 Gate::before()
語句攔截網(wǎng)關(Gates)。
// 攔截任何一個網(wǎng)關,檢查它是否是超級管理員
Gate::before(function($user, $ability) {
if ($user->is_super_admin == 1) {
return true;
}
});
// 或者你使用一些權限包
Gate::before(function($user, $ability) {
if ($user->hasPermission('root')) {
return true;
}
});
更多建議: