在laravel中,为什么我无法获取当前用户信息?

ukdjmx9f  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(178)

在laravel中,我试图在登录后获得当前用户,但我不能。为什么我无法获取当前已登录的用户?

public function login(Request $request)
{
    if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
        $user = Auth::user();
        Auth::login($user);
        return ['message' => "Successfully Logged In"];
    }
    return ['error' => "Invalid Credentials"];
}

public function currentUser()
{
    $user = Auth::user();
    if ($user) {
        return ["user" => $user];
    }
    return ["error" => "User Not Found"];
}

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

Route::post('/login',[UserController::class, 'login']);
Route::get('/getuser',[UserController::class, 'currentUser']);
cnh2zyt3

cnh2zyt31#

use Illuminate\Support\Facades\Auth;
 use Illuminate\Http\Request;

 public function login(Request $request)
    {
        if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
            // If the login is successful, it's advisable to refresh the user's session to safeguard against session fixation.
            $request->session()->regenerate();
            // Authentication was successful, no need to call Auth::login($user)
            return ['message' => "Successfully Logged In"];
        }
        return ['error' => "Invalid Credentials"];
    }

通过调用auth()->user();获取当前登录的用户。要在刀片中登录用户电子邮件,请使用{{ auth()->user()->email }}

goqiplq2

goqiplq22#

使用Auth::attempt后,不需要再调用Auth::login($user),因为如果凭证正确,attempt方法已经登录了用户。确保警卫工作正常。如果不是,请按照上述解决方案重新生成会话。”

$request->session()->regenerate();

相关问题