我默认使用Laravel 5.3和Auth this roles package。如果我有类似的角色以及他们的页面,如何在 用户登录 之后进行正常的用户重定向。例如,我有 AdminRole ,在登录之后,我想将用户重定向到/admin/dashboard
。
我在LoginController
尝试了类似的内容,但没有意义:
protected function redirectTo()
{
if (Auth::user()->isRole('admin'))
return redirect()->route('admin');
return redirect()->route('home');
}
或许有更好的方法可以使用middleware
进行重定向?
这是我的路线(web.php
):
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index');
Route::resource('company', 'CompanyController');
Route::group(['prefix' => 'admin'], function () {
Route::get('login', function () {
return view('admin.pages.admin-login');
});
Route::group(['middleware' => 'role:admin'], function () {
Route::get('/', function () {
return view('admin.admin-main');
});
});
});
答案 0 :(得分:0)
像这样使用它:
return Redirect::to('admin');
请注意:
路线:Route::get('company', 'CompanyController@show');
控制器: 这很好用:
function show(){
return Redirect::to('home');
}
但这不是
function show(){
$this->redirectto();
}
function redirectto()
{
return Redirect::to('home');
}
答案 1 :(得分:0)
<强> route.php 强>
Route::get('home', ['as' => 'admin_home', 'uses' => 'HomeController@index']);
Route::get('login'['as'=>'admin_login','uses'=>'LoginController@admin_login']);
<强> LoginController.php 强>
use Illuminate\Support\Facades\Redirect;
public function index(){
$User=new User();
if(isset(AUTH::user()->id)){
$User->id=AUTH::user()->id;
$auth_user_role=$User->auth_user_role();
$rl_title=$auth_user_role[0]->rl_title;
if(isset(Auth::user()->id) && isset($rl_title) && $rl_title == 'Admin'){
return view('home.admin',$this->param);
}
else if(isset(Auth::user()->id) && isset($rl_title) && $rl_title == 'Moderator'){
return view('home.moderator',$this->param);
}
else{
return Redirect::route('admin_login');
}
}else{
return Redirect::route('admin_login');
}
}
<强>视图强>
-> views
-> home
-> admin.blade.php
-> member.blade.php
答案 2 :(得分:0)
我需要在Auth / LoginController中执行类似的操作:
protected function authenticated()
{
if(Auth::user()->isRole('admin')) {
return redirect()->intended('/admin');
}
return redirect()->intended('/home');
}