我已经在这里停留了一段时间。我希望我能清楚地解释这个问题。我正在尝试为管理员和用户创建单独的页面。为此,我创建了一个管理中间件。现在,当我登录时,它会将我重定向到同一页面,即管理员或用户。我希望它在管理员登录时转到管理仪表板,而在用户登录时转到用户主目录。希望问题解决。 这是 AdminMiddleware 代码:
public function handle($request, Closure $next)
{
if(Auth::user()->user_type == 'admin') //If usertype is admin
{
return $next($request);
}
else {
return redirect('home');
}
}
以下是路线代码:
Route::get('/','HomeController@index');
//For Admin
Route::group(['middleware' => ['auth','admin']], function() {
Route::get('/admin','HomeController@home_page');
Route::get('/users-list', 'UserController@users_list');
});
这是 HomeController 代码:
public function index()
{
return view('home', compact('currantWorkspace'));
}
我已将中间件路径添加到 kernel.php 文件。
如有需要,我很乐意提供其他详细信息。任何解决方案/建议都将受到高度赞赏。
修改
我已经尝试过了,但是仍然存在。
protected function redirectTo(){
if (Auth::user()->user_type != 'admin') {
return 'admin';
//return redirect('/admin');
}
else {
return 'home';
//return redirect('/');
}
}
我认为 redirectTo 功能不起作用,或者没有检查if / else条件
答案 0 :(得分:0)
如下更改路线。
Route::get('/','HomeController@index')->name('home');
Route::group(['middleware' => ['auth','admin']], function()
{
Route::get('/admin','HomeController@home_page')->name('admin.home');
Route::get('/users-list', 'UserController@users_list');
});
将中间件中的重定向语句更改为
public function handle($request, Closure $next)
{
if(Auth::user()->user_type == 'admin') //If usertype is admin
{
return $next($request);
}
else
{
return redirect()->route('home');
OR
return redirect('/');
}
}
答案 1 :(得分:0)
为什么不在登录函数中创建“ if,else”语句?
if(Auth::user()->user_type == "Admin"){
return Redirect::route('dashboard');
}else if(Auth::user()->user_type == "Standard User"){
return Redirect::route('home');
}
答案 2 :(得分:0)
目前存在一些问题,关键是在任何人尝试登录时都不会调用您定义的中间件。
要使其正常运行,我认为您只需将其添加到LoginController.php
protected function authenticated()
{
if (Auth::user()->user_type == 'admin') {
return redirect('dashboard');
}
return redirect('home');
}
此方法基本上告诉laravel用户登录后要做什么。