我有不同的用户,其中一些是普通用户,还有一些是管理员。我需要的是管理员可以通过单击用户列表中的按钮以任何其他用户身份登录。
到目前为止,我所拥有的是:
index.blade.php(用户列表):
<a href='{{URL::route('users.loginas', array('id' => $user->id))}}'>LoginAs</a>
路线.php:
Route::group(array('before'=>'auth'), function()
{
Route::get('/', array('as'=>'index', 'uses'=>'HomeController@showWelcome'));
Route::resource('users', 'UsersController');
Route::any('users/loginas/{id}', array('as'=>'users.loginas', 'uses' => 'UsersController@loginAs'));
});
用户控制器.php:
class UsersController extends BaseController {
...
public function loginAs($id)
{
Auth::logout();
Auth::loginUsingId($id);
return Redirect::route('provalogin');
}
}
当我在使用 ID 为 1 的用户登录时从用户列表中单击 ID 为 2 的用户的链接时,我被正确地重定向到 mysite.com/users/loginas/2 但随后它抛出了一个错误异常:
传递给 Illuminate\Auth\Guard::login() 的参数 1 必须实现接口 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)
有效。
我究竟做错了什么?或者我应该怎么做?