php会话登录系统

php会话登录系统,php,session,single-sign-on,Php,Session,Single Sign On,我有一个服务器,比如“XYZ”,还有许多不同域的客户端,比如a、B和C。身份验证是在服务器上完成的。 -当用户第一次访问任何一个站点时,我们将要求他为该站点创建帐户。他将输入电子邮件和密码。我们会将数据发送到服务器并存储到thr。现在,他在“XYZ”中拥有一个帐户,这样他就可以登录到任何站点A、B和c 下一步:例如,他来到站点B,要登录,他输入电子邮件和密码。我们将把这些数据带到服务器进行验证,如果密码与电子邮件匹配,我们会将状态“是”发送回客户端,以便he成功登录并转到内部页面 因为向clin

我有一个服务器,比如“XYZ”,还有许多不同域的客户端,比如a、B和C。身份验证是在服务器上完成的。 -当用户第一次访问任何一个站点时,我们将要求他为该站点创建帐户。他将输入电子邮件和密码。我们会将数据发送到服务器并存储到thr。现在,他在“XYZ”中拥有一个帐户,这样他就可以登录到任何站点A、B和c

下一步:例如,他来到站点B,要登录,他输入电子邮件和密码。我们将把这些数据带到服务器进行验证,如果密码与电子邮件匹配,我们会将状态“是”发送回客户端,以便he成功登录并转到内部页面

因为向clink发送电子邮件和状态“是”是不安全的。我们正在使用套接字编程。这样外界就不会知道我们正在发送和返回什么数据。 因为我们使用的是套接字,所以无法创建任何会话或cookie,因为我们没有在浏览器中打开服务器站点


我想,像:当用户成功登录到网站B。如果同时在下一个标签,他去网站C。他不应该要求登录(不应该显示登录页面)。他自动登录(进入内部页面)

用户登录XYZ站点后,能否在浏览器中设置cookie


因此,现在当用户访问站点A、B或C时,您可以检查cookie是否针对XYZ域设置,如果是,您可以登录该用户。但请注意,您只能在(XYZ的)子域之间共享cookie,而不能在不同的域之间共享cookie。

用户登录XYZ站点后,您能否在浏览器中设置cookie


因此,现在当用户访问站点A、B或C时,您可以检查cookie是否针对XYZ域设置,如果是,您可以登录该用户。但是请注意,您只能在(XYZ的)子域之间共享cookie,而不能在不同的域之间共享cookie。

您正在寻找的东西叫做(缩写为SSO),这是一个很难正确解决的问题。有,所有这些都以他们自己独特的方式可怕地吮吸

实现目标的一个主要障碍是我们通常如何跟踪网络登录:cookies。特别是,一个域只能设置属于它的cookie。这意味着,如果您的三个网站位于三个不同的域上,则不能让一个网站为其他网站设置cookie

解决这个问题的一种常见方法是将身份验证服务放在另一个域名上。每当您需要检查用户是否登录时,您都会将其指向该身份验证服务。一种流行的统一登录机制使用这种技术。OpenID是StackOverflow使用的

(如果您使用各种StackExchange站点,您可能已经注意到,有时您可以在加载页面后自动登录到其他站点。我仍然不确定这是如何工作的,并且还没有进行调查。)


根据您所描述的,中央身份验证将为您提供良好的服务。您甚至可能会发现,实现基于OpenID的系统甚至可以很好地用于您的站点。。。虽然如果您这样做,我鼓励您将整个URI的复杂性隐藏为身份问题,但普通最终用户不太可能理解这个概念。

您正在寻找的东西叫做(缩写为SSO),这是一个很难正确解决的问题。有,所有这些都以他们自己独特的方式可怕地吮吸

实现目标的一个主要障碍是我们通常如何跟踪网络登录:cookies。特别是,一个域只能设置属于它的cookie。这意味着,如果您的三个网站位于三个不同的域上,则不能让一个网站为其他网站设置cookie

解决这个问题的一种常见方法是将身份验证服务放在另一个域名上。每当您需要检查用户是否登录时,您都会将其指向该身份验证服务。一种流行的统一登录机制使用这种技术。OpenID是StackOverflow使用的

(如果您使用各种StackExchange站点,您可能已经注意到,有时您可以在加载页面后自动登录到其他站点。我仍然不确定这是如何工作的,并且还没有进行调查。)


根据您所描述的,中央身份验证将为您提供良好的服务。您甚至可能会发现,实现基于OpenID的系统甚至可以很好地用于您的站点。。。虽然如果您这样做,我鼓励您将整个URI的复杂性隐藏为身份问题,但普通最终用户不太可能理解这个概念。

哇,这以前从未奏效过!:)此外,我还为你的问题添加了一些相关的标签。哇,这以前从未奏效过!:)另外,我在你的问题中添加了一些相关的标签。我也无法设置cookie。我有在数据库中设置变量的想法,无论他是否登录到特定的IP地址。我不知道它是否会工作。请参考此设置跨子域的Cookie:站点不是服务器的子域,这些是完全不同的域。哦。。。然后设置cookie可能在跨域上不起作用,最好将用户的状态(无论是否登录)存储在数据库中,并在其他站点上检查它。我也无法设置cookie。我有在数据库中设置变量的想法,无论他是否登录到特定的IP地址。我不知道它是否会工作。请参考此设置跨子域的Cookie:站点不是服务器的子域,这些是完全不同的域。哦。。。然后,设置cookie可能不适用于跨域,最好将用户的状态(无论是否登录)存储在数据库中,并在其他站点上进行检查。您说过,“无论何时需要检查用户是否登录,您都会将其定向到该身份验证服务。”将其定向到服务器后该怎么办?我无法设置饼干。因为身份验证是通过套接字完成的。我应该在数据库中设置一个变量吗?我的意思是,实际上应该将用户指向身份验证服务器