如何使用 php 在类似应用程序中对用户进行身份验证
how to authenticate users among similar applications using php
您好,有两个应用程序,每个用户的数据库都不同。
我已经使用会话实现了登录功能,但在两个应用程序代码中都是这样
应用程序 1:
`
session_start();
if(!isset($_SESSION['user'])){
header('Location:http://localhost/myapp1/login.php');
exit();
}
`
应用程序 2:
`
session_start();
if(!isset($_SESSION['user'])){
header('Location:http://localhost/myapp2/login.php');
exit();
}
`
上述方法的问题在于,即使用户登录到 myapp1,如果用户 ID 在两个应用程序中都存在,他也能够访问 myapp2。
请让他们知道如何解决这个问题。
这是您的身份验证例程中的一个简单设计问题。不要只考虑 user
,而是将其与 app
配对(可能是您可以自己生成的唯一 ID 或应用程序的名称)并在您的 session
中维护这两件事, 至少可以说。
然后您可以生成应该在全球范围内唯一的访问令牌。因此,即使您可以在两个应用程序上拥有相同的用户,第二个应用程序也不会生成访问令牌。
此外,我看到的另一个缺陷是,当这是一个伞式组织下的两个应用程序时,为什么您需要为不同的用户维护多个 table。只维护一个用户 table 其中 PRIMARY KEY
是一对 (user, app)
.
您好,有两个应用程序,每个用户的数据库都不同。 我已经使用会话实现了登录功能,但在两个应用程序代码中都是这样
应用程序 1:
`
session_start();
if(!isset($_SESSION['user'])){
header('Location:http://localhost/myapp1/login.php');
exit();
}
`
应用程序 2:
`
session_start();
if(!isset($_SESSION['user'])){
header('Location:http://localhost/myapp2/login.php');
exit();
}
`
上述方法的问题在于,即使用户登录到 myapp1,如果用户 ID 在两个应用程序中都存在,他也能够访问 myapp2。 请让他们知道如何解决这个问题。
这是您的身份验证例程中的一个简单设计问题。不要只考虑 user
,而是将其与 app
配对(可能是您可以自己生成的唯一 ID 或应用程序的名称)并在您的 session
中维护这两件事, 至少可以说。
然后您可以生成应该在全球范围内唯一的访问令牌。因此,即使您可以在两个应用程序上拥有相同的用户,第二个应用程序也不会生成访问令牌。
此外,我看到的另一个缺陷是,当这是一个伞式组织下的两个应用程序时,为什么您需要为不同的用户维护多个 table。只维护一个用户 table 其中 PRIMARY KEY
是一对 (user, app)
.