我有一个类别控制器,用于检查用户是否已登录
class CategoryController extends Controller
{
public function __construct() {
$this->middleware('auth');
}
...
我的分类路线是:
//Category Controller
Route::get('admin/category/{category}/edit', ['uses'=>'categoryController@edit','as'=>'admin.category.edit']);
Route::put('admin/category/{category}', ['uses'=>'categoryController@update','as'=>'admin.category.update']);
Route::get('admin/category/{category}', ['uses'=>'categoryController@show','as'=>'admin.category.show']);
Route::delete('admin/category/{category}', ['uses'=>'categoryController@destroy','as'=>'admin.category.destroy']);
Route::get('admin/category/create', ['uses'=>'categoryController@create','as'=>'admin.category.create']);
Route::get('admin/category', ['uses'=>'categoryController@index','as'=>'admin.category.index']);
Route::post('admin/category', ['uses'=>'categoryController@store','as'=>'admin.category.store']);
有没有办法只允许特定用户访问这些视图?
例如,如果用户电子邮件是admin123@gmail.com,则可以转到这些视图。
我知道我可以这样检查
if(Auth::user()->email == 'admin123@gmail.com')
{
dd('admin Logged in');
}
但如果我转到个人观点并将所有内容放在if语句中,这是可能的。
有没有办法在控制器中处理此问题。
感谢。
答案 0 :(得分:0)
您可以使用middlewares
进行此类工作。
来自文档
中间件提供了一种方便的机制,用于过滤进入应用程序的HTTP请求。例如,Laravel包含一个中间件,用于验证应用程序的用户是否经过身份验证。如果用户未经过身份验证,则中间件会将用户重定向到登录屏幕。但是,如果用户通过身份验证,则中间件将允许请求继续进入应用程序。
答案 1 :(得分:0)
您应该按路由组限制用户。请使用middleware。
但是,如果您有复杂的逻辑,有时您可能想要检查用户是否是控制器,模型和其他类中的管理员。在这种情况下,您可以创建global helper isAdmin()
并将其用于简单检查。例子:
if (isAdmin()) {
// Do something
}
{{ isAdmin() ? 'active' : '' }}
答案 2 :(得分:0)
更好地定义用户角色,例如0表示管理员,1表示用户,2表示成员和检查用户角色
if(Auth::check())
{
if(Auth::User()->user_type == 0)
{
return view('admin_dashboard);
}
else if(Auth::User()->user_type == 1)
{
return view('user_dashboard);
}
else if(Auth::User()->user_type == 2)
{
return view('member_dashboard);
}
}