我有不同的用戶,其中一些是普通用戶,一些是管理員。 我需要的是,只需單擊用戶列表中的按鈕,管理員就可以以任何其他用戶身份登錄。用特定用戶登錄Laravel 4
我至今是:
index.blade.php(用戶列表):
<a href='{{URL::route('users.loginas', array('id' => $user->id))}}'>LoginAs</a>
routes.php文件:
Route::group(array('before'=>'auth'), function()
{
Route::get('/', array('as'=>'index', 'uses'=>'[email protected]'));
Route::resource('users', 'UsersController');
Route::any('users/loginas/{id}', array('as'=>'users.loginas', 'uses' => '[email protected]'));
});
UsersController.php:
class UsersController extends BaseController {
...
public function loginAs($id)
{
Auth::logout();
Auth::loginUsingId($id);
return Redirect::route('provalogin');
}
}
當我點擊鏈接與ID 2從用戶列表,而用戶與ID爲1的用戶登錄,我正確地重定向到mysite.com/users/loginas/2但隨後拋出ErrorException:通過
參數1來照亮\ Auth \ Guard :: login()必須實現 接口Illuminate \ Auth \ UserInterface,null給出,在 /var/www/mysite.com/web/vendor/laravel/framework/src/Illuminate/Auth/中調用Guard.php 上線368和定義
然後,如果我改變的URL mysite.com/users我可以看到,我其實是登錄的新用戶,所以Auth::loginUsingId(2)
瓦特orked。
我在做什麼錯?或者我該怎麼做?
你可以嘗試它沒有'''Auth :: logout()'''?似乎在同一個請求中不能調用'''Auth :: logout()''和'''Auth :: loginUsingId()'''。 – bryantebeek
如果沒有'Auth :: logout()'它不會崩潰,但它也不會切換記錄的useras我保持seing永恆,就好像我仍然是管理員用戶。 :( – Jester
我遇到了同樣的問題,我注意到如果你使用Auth :: login而不是Auth :: loginUsingId,我實際上會與新用戶重新登錄。但這些方法和如何返回到管理員之間有什麼區別 - 我沒有任何線索 – Victor