【问题标题】:Laravel 5.8 Auth::guard()->check() always return falseLaravel 5.8 Auth::guard()->check() 总是返回 false
【发布时间】:2021-04-05 07:03:47
【问题描述】:

我使用 Auth::guard 身份验证。 我输入了正确的电子邮件和密码,但它仍然返回错误! 但是Auth::guard($guard)->attempt($dataLogin) 返回true。我找不到解决方案。 这是登录控制器文件:

<?php

namespace App\Http\Controllers\Web;

use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;

class adminController extends Controller
{
     use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */

    protected $redirectTo = '/home';
    /**
     * Create a new controller instance.
     *
     * @return void
     */

     const ALL_GUARD = ['admin'];

    public function guard()
    {
        return Auth::guard('admin');
    }

    function login(Request $request) 
    {
      $dataLogin = $request->only(['email', 'password']);
        foreach (self::ALL_GUARD as $guard) {
            dd(Auth::guard($guard)->attempt($dataLogin));
            if (Auth::guard($guard)->attempt($dataLogin)) {
                return redirect('/'.$guard.'/');
            }
        }
      return redirect('/login')->with('error', 'error!');
    }

    public function showLoginForm()
    {
        return view('auth.login');
    }

}

这里是访客中间件:

<?php

namespace App\Http\Middleware;

use App\Traits\ResponseTrait;
use Closure;
use Illuminate\Support\Facades\Auth;
class adminLogin
{
    const GUARD_ADMIN = 'admin';
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    use ResponseTrait;

    public function handle($request, Closure $next)
    {
        if (Auth::guard(self::GUARD_ADMIN)->check()) {
            return $next($request);
        }

        return abort(401);
    }
}

内核.php:

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'admin' => \App\Http\Middleware\adminLogin::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    ];

我做错了什么?帮帮我,谢谢!

【问题讨论】:

  • 请添加您的错误响应和路由声明。

标签: php laravel authentication


【解决方案1】:

对于登录尝试尝试Auth::attempt($credentials) 而不是 Auth::guard()-&gt;attempt()

从 laravel 文档https://laravel.com/docs/8.x/authentication#authenticating-users查看这个

【讨论】:

    【解决方案2】:

    试试这个

     Auth::guard()->attempt($dataLogin);
    

    或者这个

     Auth::guard('admin')->attempt($dataLogin)` 
    
    1. 如果您希望在整个应用程序中使用新创建的admin 保护,您可以更改配置文件的defaults 中的值。

    1. 如果只是AuthController使用Laravel内置的Auth系统,可以在AuthController.phpPasswordController.php中加入这一行em>:
        protected $guard = 'admin';
    

    Ref - 检查 Guard 自定义 here


    1. 如果您希望为任何与身份验证相关的任务设置除默认值之外的守卫,您可以像这样手动指定它:
        // For route middleware
        Route::get('something', [
            'middleware' => 'auth:admin',
            'uses' => 'somethigController@show'
        ]);
    
        // For manually logging the user in
        if (Auth::guard('admin')->attempt($credentials)) {
            // Authenticated...
        }
        
        // To login specific user using eloquent model
        Auth::guard('admin')->login($user);
    
        // For getting logged in user
        Auth::guard('admin')->user();
        
        // To check if user is logged in
        if (Auth::guard('admin')->check()) {
            // Logged in
        }
    

    参考 - https://laravel.com/docs/5.2/authentication

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 1970-01-01
      • 2020-02-14
      • 2018-01-07
      • 2014-02-25
      • 2019-06-28
      • 2015-03-03
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多