PHP API不保留SESSION。

17 浏览
0 Comments

PHP API不保留SESSION。

我正在尝试制作一个简单的登录PHP API,并通过VueJS的Axios调用它。

在登录尝试时,我向与所需脚本相同域上的axios POST请求发送数据,如下所示:

axios.post("/api/open/auth/login", {
    data: {
        username: this.name,
        password: this.pass
    }
})

然后在PHP中,我检查从POST中插入的数据,如果正确,我设置会话变量,如下所示(文件开头有session_start()):

$_SESSION["userID"] = $row->id_users;
$_SESSION["username"] = $row->name;

到目前为止,这个工作得很好,我确信这部分代码运行良好,会话变量应该被设置了,但我创建了另一个脚本,用于检查用户是否已通过检查这些会话变量登录,如下所示:

if ( isset($_SESSION["userID"]) && isset($_SESSION["username"]) )
{
    jsonResponseOk("Session is set.");
}
else
{
    jsonResponseError("Session is not set.");
}

以下是我无法理解的部分,尽管会话变量应该在我之前登录时设置了,但这总是进入ELSE分支。

0
0 Comments

PHP API does not keep SESSION 的出现原因是,Web APIs 不使用会话(SESSION),而是使用JWT(JSON Web Token)对用户进行验证。身份验证是通过发送 bearer token 进行的,并在验证后将用户 id 存储到 cookies 或本地存储中。

解决方法是使用JWT来实现用户验证。JWT是一种用于在网络间传递声明的安全传输方式。在验证用户身份后,可以将用户id存储到cookies或本地存储中,以便在后续的API请求中进行使用。

你可以在这里了解更多关于JWT的信息。

谢谢。

0