簡體   English   中英

Laravel 5:Apache php http認證

[英]Laravel 5: Apache php http authentication

我需要一些關於以下主題的幫助和建議。

我的噓聲有一個簡單的Apache服務器設置,並有一個簡單的PHP身份驗證設置。 只要使用這樣的面板驗證用戶。

在此輸入圖像描述

他/她可以訪問在其后面運行的所有應用程序。 換句話說,這個面板用作“門”,如果你在門上,那么你就可以訪問(當然在Web服務器上運行了權限表)。

問題

我使用Laravel 5構建的應用程序需要在門后運行,這意味着應用程序需要知道用戶是誰。

使用$_SERVER['PHP_AUTH_USER']; 我可以獲取當前登錄的username

但是如果我想跟蹤user's在我的應用上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,

      ]);
  }

但這會讓用戶每次刷新頁面! 但是沒有更進一步的最佳方法是什么?

  1. 我需要一個單獨的提供程序(我在AppServiceProvider測試了上面的代碼)嗎?

  2. 保存username后,我怎么能這樣做$this->user_id

注意 :我知道Laravel有基本的auth開箱即用,但這不起作用,因為用戶還沒有在我的數據庫中。 我需要先像上面那樣創建它們。

我知道這不是你想聽到的,但我真的會使用Laravel的身份驗證。 Apache基本身份驗證應該可以防止未經授權的用戶訪問您的頁面,並可能阻止機器人抓取該頁面 - 而不是作為您的應用程序的登錄表單。

為Apache auth創建一組憑據,因此擁有它的所有人都可以訪問該頁面。 但是,創建一個包含用戶名和密碼的標准登錄表單,該表單將特定於每個用戶。 這樣,即使有人設法通過Apache,他們仍然不會登錄。

在安全方面,這將是一條路。 此外,通過這種方式,您可以開啟新的可能性:您可以存儲有關用戶的更多信息,例如他們的首選語言或權限范圍。

想一想:)

首先,您應該檢查數據庫中是否已存在具有提供的用戶名的用戶。 這樣,您不會在每次刷新時創建新用戶。 然后你可以使用Auth::login($user); 登錄用戶,允許您使用Laravel提供的auth中間件(不是auth.basic !)。 這樣,您可以使用Auth Facade通過整個App訪問用戶,並存儲有關用戶的其他信息:

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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM