【问题标题】:Auth::check() returning false in Laravel 5.4Auth::check() 在 Laravel 5.4 中返回 false
【发布时间】:2018-09-08 04:20:14
【问题描述】:

我使用 laravel 5.4 作为我的应用程序的后端,而我使用 angular 的前端。我正在使用 laravel auth 进行身份验证。

问题是Auth::attempt() 工作正常,如果我立即打印Auth::user(),那么它会打印数据,但如果我尝试在下一个方法中获取它,它会返回false。但此功能在托管服务器中运行良好。

经过测试,

  1. 将会话从文件更改为数据库。
  2. kernel.php 中的更改($middleware 的内容)。
  3. php artisan make:auth 又做了一次吗?
  4. 用户表列发生变化。
  5. 将私有 $primarykey = 'id' 添加到模型。
  6. 向所有路由添加“网络”中间件。

这是我的控制器

namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\User;

public function login()
{
 if (Auth::attempt(['email' => $email, 'password' => $password ])) 
        {
            $response = array('response' =>'Succssfully Login!' , 'success' => true);

            return $response;
        }
 }

这是我在同一个控制器中使用Auth::check() 的地方

public function check() 
{
    if(Auth::check())
        $response = array('response' =>'Authenticated' , 'success'=>true);
    else
        $response = array('response' =>'UnAuthenticated' , 'success'=>false);

    return $response;    
}

我很困惑,因为相同的代码在托管服务器中运行良好,但在 localhost 上运行不正常。为此我需要在 laravel 中做任何与 http 相关的更改吗?

【问题讨论】:

  • 您是在使用刀片模板还是在完全不同的服务器上加载您的角度 index.html / p.s。是不是从 laravel 加载的角度应用程序

标签: php laravel laravel-5


【解决方案1】:

如果您的 Angular 应用程序在 laravel 之外,并且在不使用刀片模板加载 Angular 应用程序的入口点(即 Angular 的 index.html)的情况下加载,那么 Laravel 无法为应用程序设置会话,因此当您请求下次你的 laravel 无法识别会话时,它会在你调用 Auth::check() 时给出 false

要在外部(即您的案例中的 Angular 应用程序)上实现身份验证,您应该使用 Laravel Passport 的密码客户端或基于 JWT 的身份验证,使用 https://github.com/tymondesigns/jwt-auth

对于 Angular 和基于 Web 的应用程序,我更愿意使用 JWT。

【讨论】:

  • 感谢您的回复,您说得对,基本身份验证不适用于 laravel 和 angular 的组合,但我很惊讶它在托管服务器上运行。正如你所建议的,我要选择 jwt-auth。
猜你喜欢
  • 2018-12-19
  • 2017-11-27
  • 2018-01-07
  • 2015-03-03
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
相关资源
最近更新 更多