[英]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,
]);
}
但这会让用户每次刷新页面! 但是没有更进一步的最佳方法是什么?
我需要一个单独的提供程序(我在AppServiceProvider
测试了上面的代码)吗?
保存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.