首页 > 解决方案 > Laravel - 检查用户是否在另一台服务器上进行了身份验证

问题描述

假设我在一个主机上有一个 laravel 站点,另一个主机只是用于存储一些特定的文件。在第二台主机中,我想检查用户是否在 laravel 站点上经过身份验证,然后我让他/她访问该文件。我怎样才能做到这一点?

标签: laravelauthentication

解决方案


你几乎可以只使用普通的 PHP 代码,而不必在你的其他服务器上使用 Laravel 框架。

例如,创建您自己的自定义 cookie 或会话变量,其中包含来自身份验证的令牌。使逻辑类似于$authToken = md5($user->username) . "." . md5($user->password);,然后将其添加到 cookie 或$_SESSION[]变量中。

从这里,在您用于存储的另一台服务器上创建一个小型后端,然后执行类似的操作。

<?php
/////////////
/**
 * Here there should be database connection logic.
 */
/////////////
$posts = (object) $_POST;

if ($_SERVER['REQUEST_METHOD'] == "POST")
{
    $postArray = [
        'authToken',
        'user'
    ];

    foreach($postArray as $post)
    {
        if (!isset($_POST[$post]))
        {
            return false;
        }
    }

    $query = htmlspecialchars("SELECT * FROM users WHERE id=" . $posts->user);

    $result = mysqli_query($connection, $query);

    $row = mysqli_fetch_all($result);

    $db_stack = md5($row['username']) . "." . md5($row['password']);
    if ($posts->authToken != $db_stack)
    {
        return false;
    }

    // Return the requested file here.
}

推荐阅读