我有不同的用户,其中一些是普通用户,一些是管理员。 我需要的是,只需单击用户列表中的按钮,管理员就可以以任何其他用户身份登录。用特定用户登录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