Laravel没有为用户创建经过身份验证的会话

时间:2017-02-23 07:16:03

标签: laravel laravel-5.2

我正在使用自定义表进行用户身份验证。我可以像在AuthController.php

中一样成功登录
public function authenticated(Request $request, $user)
{
    dd($user);
}

我收到了用户详细信息。

但当我进入其他路线时,我会在相应的控制器中

  • dd(Auth::user())返回null
  • dd(session()->all())返回_token
  • dd(Auth::check())返回false

我正在使用public_users表进行身份验证,使用public_emailpublic_password字段进行身份验证,因此我更改了App\User.php文件,如下所示:

class User extends Authenticatable
{
    protected $table = 'public_users';
    protected $primaryKey = 'public_users_id';
    protected $fillable = [
        'public_email',
        'public_password'
    ];
    protected $hidden = [
        'public_password'
    ];

    // Override required, Otherwise existing Authentication system will not match credentials
    public function getAuthPassword()
    {
        return $this->public_password;
    }
}

并在app/Http/Controllers/Auth/AuthController.php我添加了以下代码

public function loginUsername()
{
    return property_exists($this, 'username') ? $this->username : 'public_email';
}

public function authenticated(Request $request, $user)
{
    dd($user);
}

我的config/auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model'  => App\User::class,
    ]
]

我做错了什么?我怎样才能创建用户会话?

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

登录后尝试auth()->user()

答案 1 :(得分:-1)

解决!

我从正在关闭请求生命周期的dd($user)中删除app/Http/Controllers/Auth/AuthController.php并每次都创建一个新令牌。我需要的只是重定向handleUserWasAuthenticated

/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php方法中的默认值
protected function authenticated(Request $request, $user)
{
    return redirect()->intended($this->redirectPath());
}