Laravel 5:Apache php http认证

use*_*381 5 php apache laravel

我需要一些关于以下主题的帮助和建议.

我的嘘声有一个简单的Apache服务器设置,并有一个简单的PHP身份验证 设置.只要使用这样的面板验证用户.

在此输入图像描述

他/她可以访问在其后面运行的所有应用程序.换句话说,这个面板用作"门",如果你在门上,那么你就可以访问(当然在Web服务器上运行了权限表).

问题

我使用Laravel 5构建的应用程序需要在门后运行,因此这意味着应用程序需要知道用户是谁.

使用$_SERVER['PHP_AUTH_USER'];我可以获取username当前登录的.

但是如果我想跟踪user's我的应用上的操作呢?我需要一些$this->user_id合适的东西吗?

所以我一想到用户通过'门'我就会获取username并创建一个用户,将其保存在我在Laravel后面运行的数据库中.

  if(isset($_SERVER))
  {
    if ( array_key_exists( 'PHP_AUTH_USER', $_SERVER ) ) {
        $agent = $_SERVER['PHP_AUTH_USER']; //Request::server('PHP_AUTH_USER')

    }

    $user = User::create([
      'username' => $agent,

      ]);
  }
Run Code Online (Sandbox Code Playgroud)

但这会让用户每次刷新页面!但是没有更进一步的最佳方法是什么?

  1. 我需要一个单独的提供者(我测试了上面的代码AppServiceProvider)吗?

  2. $this->user_id保存后怎么办这样的username事呢?

注意:我知道Laravel有基本的auth开箱即用,但这不起作用,因为用户还没有在我的数据库中.我需要先像上面那样创建它们.

tom*_*mmy 1

首先,您应该检查数据库中是否已存在具有所提供用户名的用户。这样您就不会在每次刷新时创建新用户。然后您可以使用Auth::login($user);登录用户来使用authLaravel 提供的中间件(不是auth.basic!)。这样您就可以使用 Auth 外观在整个应用程序上访问用户并存储有关用户的附加信息:

if(isset($_SERVER))
{
    if ( array_key_exists( 'PHP_AUTH_USER', $_SERVER ) ) {
        $agent = $_SERVER['PHP_AUTH_USER']; //Request::server('PHP_AUTH_USER')

        // Try to find an existing user, or create a new one if the user does not exist
        $user = User::firstOrCreate([
            'username' => $agent,
        ]);

        // Authenticate the user
        \Auth::loginUsingId($user->id);
    }
}
Run Code Online (Sandbox Code Playgroud)