【问题标题】:How to switch Authentication from one user to another using Laravel如何使用 Laravel 将身份验证从一个用户切换到另一个用户
【发布时间】:2017-03-01 13:57:09
【问题描述】:

首先,我以用户 X 的身份登录,我有一个类似的功能:

public function loginAs($userId)
{
    Auth::loginUsingId($userId); // now use Y user
    return response()->json(['logged' => Auth::check(), 'user' => Auth::user()]);

}

当我尝试打印出Auth::check() 时,它返回 TRUE,这很好,到目前为止我现在以用户 Y 身份登录,问题是我首先以 X 用户身份登录,然后切换到另一个 Y 用户,但是当我调用其他一些函数时,当前登录的用户似乎仍然是 X,我想成为当前用户登录的 Y...这可能与会话有关,或者我不知道确切如何做这件事,如果有人有任何样本或知道如何在 Laravel 5 中实现这些事情,将不胜感激。

【问题讨论】:

  • 你是说用Y用户登录后Auth::user()还是返回X用户? dump(Auth::loginUsingId($userId)); 的结果是什么?
  • 你在Auth::loginUsingId($userId)之前尝试过Auth::logout()吗?
  • 您是否在未注销第一个用户的情况下切换了用户?

标签: php laravel


【解决方案1】:

你能详细说明一下吗?我可以使用以下方法切换用户:

use Auth;

class TempController extends Controller
{

    public function index() {
        $user = User::find(1);
        Auth::login($user);
        var_dump(Auth::user()->id); // returns 1
        Auth::logout(); 

        var_dump(Auth::user()); // returns null

        $user = User::find(2);
        Auth::login($user);
        var_dump(Auth::user()->id); // returns 2
        Auth::logout();

    }
}

routes.php

Route::get('/temp', 'TempController@index');

如果你运行这个,你可以看到登录用户的 id 变化。

【讨论】:

  • 很好的解决方案。你也可以让它有一个参数,这样你也可以选择切换哪个帐户:Route::get('debug/hopacc/{id}', 'ProfileController@debughop')->name('debug.hop');public function debughop($id) { $user = User::find($id); Auth::login($user); return redirect('costumer/account/edit')->with('user'); }编辑:确保首先检查用户是否存在:)
【解决方案2】:

您应该使用模拟 有一篇关于此的博客文章 http://blog.mauriziobonani.com/easily-impersonate-any-user-in-a-laravel-application/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2010-12-24
    • 2021-11-30
    • 2020-11-15
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多