与PHP共享Laravel身份验证/会话

凯·卢卡斯(Kay Lucas)

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

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

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

我的问题是检查用户是否已在PHP脚本中登录。Laravels会话在那里不可用(并共享它,session_start()并且$_SESSION["auth"] = true只会将该变量添加到本机PHP会话的Laravels版本中)。

这些是我的设置 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因为要在整个域上使用会话。

我附带的PHP脚本非常简单,看起来像这样:

session_start();

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

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

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

伯伯

Laravel使用存储驱动程序进行会话管理-意味着试图通过PHP $ _SESSION变量访问其内容将永远无法工作。您的配置将默认会话驱动程序设置为“本机”(我认为),即文件会话驱动程序,这意味着所有会话数据都存储在app / storage / sessions中(我相信它以类似JSON的结构存储会话数据)。您可以在此处阅读有关会话驱动程序的更多信息

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

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与PHP共享Laravel身份验证/会话

来自分类Dev

域共享会话阻止身份验证

来自分类Dev

用于登录的 PHP 会话身份验证

来自分类Dev

Laravel身份验证会话cookie未发送

来自分类Dev

如何只在laravel中放置会话身份验证

来自分类Dev

在 Laravel 中维护会话和身份验证

来自分类Dev

NodeJS会话身份验证

来自分类Dev

基于 PHP 会话的身份验证问题,阻止 api 调用

来自分类Dev

JWT身份验证与API的会话身份验证

来自分类Dev

一个会话中的Worklight适配器身份验证在另一个会话中共享

来自分类Dev

ExpressJS / PassportJS:身份验证与会话

来自分类Dev

Firebase身份验证-设置会话到期

来自分类Dev

django中的令牌/会话身份验证

来自分类Dev

ExpressJS / PassportJS:身份验证与会话

来自分类Dev

HTTPS身份验证和会话劫持

来自分类Dev

ZAP API会话身份验证

来自分类Dev

python中的会话身份验证

来自分类Dev

Laravel 5.8身份验证

来自分类Dev

Laravel身份验证问题

来自分类Dev

多重身份验证 Laravel

来自分类Dev

角度 Laravel 身份验证

来自分类Dev

Laravel 身份验证::登录

来自分类Dev

多个Spring项目,共享身份验证

来自分类Dev

Laravel 5:Apache php HTTP身份验证

来自分类Dev

AngularJs + PHP身份验证

来自分类Dev

(PHP)身份验证帮助

来自分类Dev

Firebase PHP 身份验证

来自分类Dev

Laravel没有为用户创建经过身份验证的会话

来自分类Dev

无法在 Laravel 5.5 中同时使用会话和 JWT 身份验证