2015-02-12 139 views
3

我有这个在我的数据库如何将用户的用户页面和管理员管理页面重定向单一登录表单laravel

|username|password|type| 
------------------------ 
|foo  |12345 |1 | 
|asd  |adsdsd |0 | 

这里1意味着用户是管理员,0普通用户。

如何将管理员重定向到管理页面和普通用户到普通用户页面?

if($attempt) 
{ 
    $id = User::find($attempt); 
    $user = $id->type; 
    if($user === 0) 
    { 
    return Redirect::action('[email protected]'); 
    } 
    else 
    { 
    return Redirect::to('adminpage'); 
    } 
} 

我在UsersController页面创建此我不知道这是否是这样做的正确方法,我的代码是行不通的。

+0

在后端数据库“USER_TYPE”创建另一列(1用户2管理员).. – Matarishvan 2015-02-12 08:35:18

+0

这并不解决@minspacesix – Daan 2015-02-12 08:36:47

+0

我已经创建类似的东西看在我的岗位高于一切:/ – 2015-02-12 08:36:57

回答

0

首先,你必须在添加一个新的领域你用户表检查,例如'排名'。如果用户的排名是'1',那么他是Admin, 否则他是普通用户。

然后定义你的路由所需的所有路由文件是这样的:

Route::get('login', '[email protected]'); 
Route::post('login', '[email protected]'); 

Route::group(array('before' => 'auth'), function() { 
    Route::resource('admin', 'adminController'); 
    Route::resource('normaluser', 'normaluserController'); 
} ); 

然后在你的控制器,你必须定义所有的动作:

public function login() 
{ 
    return View::make('loginview'); 
} 

public function checkuser() 
{ 
    if (Auth::attempt(array('username'=>Input::get('username'), 'password'=>Input::get('password')))) 
    { 
     $user_data = Auth::getUser(); 

     if ($user_data->rank == 1) //if true, so this user is an admin 
     {return Redirect::to('admin');} //go to adminController index action    
     else   //if not, so he is a normal user 
     {return Redirect::to('normaluser');} // go to normaluserController index action   
    }   
    else 
    { 
     //return 'wrong user name or password'; 
     Session::flash('mismatch', "Username and Password mismatch"); 
     return Redirect::to('login'); // go again to login form to relogin 
    } 
} 

如果任何事情是不明确的,不要”毫不犹豫地问。

+1

都清楚了,先生,非常感谢你为我节省了很多时间:))谢谢很多 !! – 2015-02-12 09:20:32

+0

不要提及它。不客气。不要忘记upvote :-) – 2015-02-12 09:28:42

1

您是否在使用普通的Laravel Authentication

您将得到Object Auth :: user(),这将返回当前用户对象。

它应该看起来像这样。

控制器(SessionsController @店)

public function store() { 
    $input = Input::all(); 
    $attempt = Auth::attempt([ 
     'username' => $input['username'], 
     'password' => $input['password'] 
    ]); 

    if($attempt) { 
     if(Auth::user()->type == 1) { 
      return Redirect::admin(); // If admin, redirect to admin 
     } else { 
      return Redirect::profile(); // Else, redirect to user profile 
     } 
    } 
} 

路线

Route::resource('sessions', 'SessionsController', ['only' => ['create','store','destroy']]); 
Route::get('admin', '[email protected]')->before('adminAuth'); 
Route::get('profile/{id}', '[email protected]')->before('auth'); 
+0

是我”使用正常的身份验证,我已经为用户和管理员分组我的路线,但两者都是分开的,我如何将它们重定向到安全页面?路线::组(阵列( '前'=> 'AUTH'),函数() \t { \t \t路线::得到( '/用户',阵列( \t \t \t '使用'=>“LoginUsersController @profile”, \t \t \t '作为'=> '轮廓' \t \t \t)); \t}); \t \t路线::组(阵列(=> '验证'),函数() '前' \t { \t \t路线::获得( '管理员',阵列( \t \t \t '使用'= > 'AdminController @索引', \t \t \t '作为'=> '索引' \t \t \t)); \t \t }); – 2015-02-12 09:03:12

+0

这是我的代码,你将不得不创建过滤器到管理员。 登录后可以重定向,没有任何问题。 'Route :: get('login','SessionsController @ create'); Route :: get('logout','SessionsController @ destroy') - > before('auth'); Route :: get('admin','AdminController @ dashboard') - > before('adminAuth'); Route :: get('profile/{id}','UsersController @ showProfile') - > before('auth');' – spicydog 2015-02-12 15:08:08

0

在使用if语句:

if($attempt) 
{ 
    $id = User::find($attempt); 
    $user = $id->type; 
    if($user === 0) 
    { 
    return Redirect::action('[email protected]'); 
    header('Location: http://www.example.com/userpahe.php'); 
    } 
    else 
    { 
    return Redirect::to('adminpage'); 
    header('Location: http://www.example.com/admin-page.php'); 
    } 
} 
相关问题