如何通过 laravel 5.6 中的角色保护管理区域免受用户访问?
How to protect admin area from users by role in laravel 5.6?
我一直在寻找简单的 Laravel 5.6+ 版本角色和用户解决方案。
我想要一个 users
table。所以我在 table 中添加了 user_type
作为
中的 string
$table->enum('role', ['admin', 'user']);
我应该创建或更新哪些文件以保护 /admin
路径下的所有内容。并且不要让 admins
路线用于 users
?
您应该创建一个在所有 /admin 路由中处于活动状态的中间件。在此中间件中,您应该检查登录的用户 (Auth::user()
) 是否具有 "admin"-角色。
Auth::user()
引用 User
模型。
所以在 User
-模型中你可以创建一个像 isAdmin()
:
这样的函数
public function isAdmin()
{
return $this->role === 'admin'
}
在中间件(或任何你想要的地方)你可以写
if(Auth::user()->isAdmin()) {
// do something if user is admin
} else {
// do something if user is not admin
}
因为它在 User
模型中,您还可以为普通用户模型编写 $user->isAdmin()
。
我一直在寻找简单的 Laravel 5.6+ 版本角色和用户解决方案。
我想要一个 users
table。所以我在 table 中添加了 user_type
作为
string
$table->enum('role', ['admin', 'user']);
我应该创建或更新哪些文件以保护 /admin
路径下的所有内容。并且不要让 admins
路线用于 users
?
您应该创建一个在所有 /admin 路由中处于活动状态的中间件。在此中间件中,您应该检查登录的用户 (Auth::user()
) 是否具有 "admin"-角色。
Auth::user()
引用 User
模型。
所以在 User
-模型中你可以创建一个像 isAdmin()
:
public function isAdmin()
{
return $this->role === 'admin'
}
在中间件(或任何你想要的地方)你可以写
if(Auth::user()->isAdmin()) {
// do something if user is admin
} else {
// do something if user is not admin
}
因为它在 User
模型中,您还可以为普通用户模型编写 $user->isAdmin()
。