gpt4 book ai didi

php - 与 PHP 共享 Laravel 身份验证/ session

转载 作者:可可西里 更新时间:2023-11-01 00:45:11 25 4
gpt4 key购买 nike

我正在尝试将 Laravel 身份验证与许多简单的 HTML/Javascript 应用程序结合使用。

我认为它的理想工作方式是这样的:

  1. 用户访问简单的HTML应用
  2. 简单的 HTML 应用程序包含一个 PHP 文件,该文件检查用户已通过身份验证。如果不是这种情况,用户将被发送到Laravel 应用程序登录,如果用户已登录,他可以简单地使用该应用程序。
  3. 用户通过 Laravel 登录并被重定向回 HTML 应用程序,此过程将在此处重新开始。

我遇到的问题是检查用户是否登录到 PHP 脚本中。 Laravels session 在那里不可用(通过 session_start()$_SESSION["auth"] = true 共享它只会将变量添加到 native PHP 的 Laravels 版本 session )。

这些是我在 app/config/session.php

中的设置
return array(
'driver' => 'native',
'lifetime' => 120,
'files' => storage_path().'/sessions',
'connection' => null,
'table' => 'sessions',
'lottery' => array(2, 100),
'cookie' => 'laravel_session',
'path' => null,
'domain' => null,

);

我已将路径更改为 null,因为我想在整个域上使用该 session 。

我包含的 PHP 脚本非常简单,如下所示:

session_start();

if($_SESSION['authenticated']){
echo "logged_in";
} else {
header("Location: laravel/login/url");
}

你可能想知道为什么我不只将应用程序包含在 Laravels 框架中,这是因为这个简单的 HTML 应用程序有大约 100 个不同的版本分散在 10 个域名中,目前每个域名都有自己的(很旧和不安全的)登录脚本(每次创建新域时都会复制)。因此,我想使用 Laravel 将其集中在一个数据库和一个管理系统中。

希望这里有人知道如何解决这个问题或解决它(也许我应该尝试在我的 PHP 脚本中使用 Laravels session 包?)。

最佳答案

Laravel 使用存储驱动程序进行 session 管理——这意味着尝试通过 PHP $_SESSION 变量访问它的内容将永远行不通。您的配置将默认 session 驱动程序设置为“ native ”(我认为)文件 session 驱动程序,这意味着所有 session 数据都存储在 app/storage/sessions 中(我相信它将 session 数据存储在一些类似 JSON 的结构中)。您可以阅读有关 session 驱动程序的更多信息 here .

因此,为了回答您的问题,我想到了几种方法来解决这个问题。我可能会做的是实现一个简单的自定义 session 界面,该界面将简单地检查用户是否已登录。您可以在通过 laravel 表单对用户进行身份验证时将用户的 session 设置为已登录。例如:

if (Auth::attempt(array('email' => $email, 'password' => $password))) {
// Set your user's session to logged in here. You will have to implement some
// system to do so, the below code is INSECURE/NOT USEABLE
$_SESSION['user'] = $email;
}

然后当用户注销时,您将执行相反的操作。如上所述,出于多种原因,简单地将用户的 session 设置为登录是非常不安全的,最明显的是 session 劫持。 (This 是关于该主题的优秀读物)如果您可以实现一个安全的 session 管理系统(实际上,它应该不难,而且是轻量级的),那么我认为这个策略是您最好的选择。

另一种方法是尝试使用 cookie 作为 session 驱动程序,但这样做会增加更多层的复杂性和垃圾,因为您首先必须从一个 cookie 获取 Laravel session ID,然后使用它来读取另一个……不是一个优雅的解决方案。

所以我建议使用我谈到的第一种方法并实现一个简单且安全的 session 管理系统。希望这对您有所帮助!

关于php - 与 PHP 共享 Laravel 身份验证/ session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968414/

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