【问题标题】:How to store Auth session如何存储身份验证会话
【发布时间】:2019-08-28 04:39:09
【问题描述】:

我是 Laravel 和 firebase 的新手,我自己进行了登录名和密码验证,但我想使用 Route::group(['middleware' => ['auth']]), 功能来保护对系统的未经授权的访问,但我不知道如何告诉 Laravel 用户已经通过了身份验证,而没有使用 Auth::attempt($credentials)

那么如何设置用户已经通过身份验证,将用户重定向到主页,将登录名(用户名)传递给 Auth。

if (Auth::attempt($credentials)) { //I need to replace this line setting the user is logged already
  return redirect()->route('home');
}

我试过了:Auth()->login($nickname);

但我收到了:

传递给 Illuminate\Auth\SessionGuard::login() 的参数 1 必须是 Illuminate\Contracts\Auth\Authenticatable 的实例,给定字符串

【问题讨论】:

    标签: laravel firebase firebase-authentication


    【解决方案1】:
    Auth()->login($user);
    

    是正确的方法,你应该传递 $user 对象而不是包含用户昵称的字符串,例如:

    $use = new User();
    $user->id = 1;
    $user->email = 'eshtiaghi.amin@gmail.com';
    $user->name = $nickname;
    $user->save();
    \Auth::login($user);
    

    【讨论】:

    • 这部分解决了问题,但我不能使用 $user->save 因为我使用的是firebase所以我删除它并登录,但是当我使用时在主页:{{Auth:: user()->nickname}},它试图在一个不存在的数据库上进行选择,我认为它存储在会话中,有没有办法取消它?我还是不会用:Route::group(['middleware' => ['auth']], function()
    • 因为用户模型数据库默认设置为使用mysql数据库,但是你可以在你的模型中改变它,请看这个->stackoverflow.com/questions/51264675/…
    • @LucianoCoelho,我的荣幸
    猜你喜欢
    • 2021-11-14
    • 2015-08-27
    • 1970-01-01
    • 2017-06-16
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多