Laravel 7手动身份验证会话问题

时间:2020-05-15 19:34:49

标签: php laravel session-cookies laravel-7 php-7.4

TL; DR::成功登录并重定向到/home后,我被Controller的中间件(/login)踢回了$this->middleware('auth');

我有一个php-apache码头工人开发环境。最终,我可以将Laravel 7用于一项新服务,因此我进行了设置,获取了框架并开始使用它。我无法使用Laravel的哈希算法,因为我知道一种可以与manual authenticationAuth::attempt()方法一起使用的自定义方法。

所有人都在这一点上设置

public function login(Request $r)
{
    $data = $r->validate([
        'username' => 'required|string',
        '_pswrd'   => 'required|string',
    ]);

    $credentials = [
        'login'    => $data['username'],
        'password' => $data['_pswrd'],
        'status'   => 'A',
    ];

    try {
        if (Auth::guard()->attempt($credentials, $r->has('remember'))) {
            // Auth::user() is found and valid so redirect...
            return $r->wantsJson()
                ? new Response('', 204)
                : redirect()->intended('/');
        }

        return back()->with('errors', new MessageBag([ 'auth.failed' ]));

    } catch (Exception $e) {
        Log::warning($e);

        return back()->with('errors', new MessageBag([ 'auth.unknown' ]));
    }
}

但是,然后我去了home路线

class HomeController extends Controller
{
    public function __construct()
    {
        // \Illuminate\Support\Facades\Auth::user() === null
        $this->middleware('auth');
    }

    public function index()
    {
        return view('home');
    }
}
  • 为什么HomeController中的Auth :: user()为空?
  • 为什么我的会话丢失了?
  • 我是否缺少Apache或laravel的conf/文件夹中的某些配置?

2 个答案:

答案 0 :(得分:1)

这是没有检查显而易见的问题。 Laravel已更改(很多)用户模型,我想稍后再看。必须固定primary_keykeyType属性,以便验证中间件正常工作。

我会留下这个答案,因为我在此问题上花费了大量时间,一直认为它与auth或会话配置无关。

答案 1 :(得分:0)

警卫叫什么名字?是web后卫吗? 因此,尝试填充guard('web')或直接将其删除Auth::attempt([])