gpt4 book ai didi

php - 拉维尔 5 : Apache php http authentication

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:59 26 4
gpt4 key购买 nike

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

我的 boos 有一个简单的 Apache 服务器设置并且有 a simple php auth 设置以及。一旦使用这样的面板验证用户。

enter image description here

他/她可以访问其背后运行的所有应用程序。所以换句话说,这个面板作为一个“门”,如果你在门上,那么你就可以访问(当然,网络服务器上运行着权限表)。

问题

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

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

但是,如果我想跟踪用户 在我的应用程序上的操作怎么办?我需要像 $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::login($user); 登录用户,这允许你使用 Laravel 提供的 auth 中间件(不是 auth.basic !)。通过这种方式,您可以使用 Auth facade 在整个应用程序中访问用户并存储有关用户的其他信息:

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

关于php - 拉维尔 5 : Apache php http authentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com