将用户重定向到特定页面

时间:2016-12-28 08:58:23

标签: php laravel laravel-5

我默认使用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');
        });
    });

});

3 个答案:

答案 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');
}