gpt4 book ai didi

authentication - 在 Laravel 4 上使用特定用户登录

转载 作者:行者123 更新时间:2023-12-01 22:54:55 25 4
gpt4 key购买 nike

我有不同的用户,其中一些是普通用户,一些是管理员。
我需要的是,管理员只需单击用户列表中的按钮即可以任何其他用户的身份登录。

到目前为止我所拥有的是:

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'));

});

用户 Controller .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,但随后它抛出了一个 ErrorException:

Argument 1 passed to Illuminate\Auth\Guard::login() must implement interface Illuminate\Auth\UserInterface, null given, called in /var/www/mysite.com/web/vendor/laravel/framework/src/Illuminate/Auth/Guard.php on line 368 and defined



然后,如果我将 URL 更改为 mysite.com/users,我可以看到我实际上以新用户身份登录,因此 Auth::loginUsingId(2)工作。

我究竟做错了什么?或者我应该怎么做?

最佳答案

我所做的是使用 Session 将 userID 设置为等于 auth 用户 ID。然后,如果我想切换用户,我只需更改 session 用户 ID,但将 auth 用户 ID 保留为我自己。在我的应用程序中,我总是在查询数据时传递 session 用户 ID。如果我更新、创建或软删除记录,我会传递我的 auth 用户 ID。这样我就可以记录谁实际更改了数据。我永远不必注销来切换用户,只需设置 session 用户 ID。

关于authentication - 在 Laravel 4 上使用特定用户登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16792981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com