Php 如果用户登录到其他网站,则自动登录到当前网站
我有大约100个用ASP经典编码的网站。每个网站都接受订单并将其存储在数据库中。但是,这些订单的付款必须在另一个网站上进行,也使用ASP classic编码。所有网站均为同一家公司所有,托管在同一台IIS服务器上,并使用相同的SQL server数据库 现在,用户通过输入一些个人信息进行注册,并登录其中一个网站(例如newjersey.com网站)并下订单。然后,他被重定向到支付网站(https上的payments.master-website.com),其中他的一些个人信息(地址、城市、装运州;信用卡持有人姓名等)出现在支付表单上。在该页面上输入信用卡特定信息 由于该页面上显示的信息敏感,用户必须先登录付款网站,然后才能查看预先填写的付款表格。我不希望用户登录两次(每个网站一次)。是否有可靠的方法检查用户是否使用经典ASP登录到推荐网站Php 如果用户登录到其他网站,则自动登录到当前网站,php,asp.net,session,login,asp-classic,Php,Asp.net,Session,Login,Asp Classic,我有大约100个用ASP经典编码的网站。每个网站都接受订单并将其存储在数据库中。但是,这些订单的付款必须在另一个网站上进行,也使用ASP classic编码。所有网站均为同一家公司所有,托管在同一台IIS服务器上,并使用相同的SQL server数据库 现在,用户通过输入一些个人信息进行注册,并登录其中一个网站(例如newjersey.com网站)并下订单。然后,他被重定向到支付网站(https上的payments.master-website.com),其中他的一些个人信息(地址、城市、装运州
长话短说
- 在网站B上,我需要检查访问者是否登录到网站A
- 在网站B上,我需要网站A中的ID会话变量
- 两个网站使用相同的数据库服务器
- 我需要清楚的指示
- 如果PHP或ASP.NET解决方案是通用/可移植的,则可以接受
另一种方法是使用会话,尽管我不确定它是否可以使用不同的域名。因为它们都在同一台机器上,所以这是可能的,但我不是100%确定。您所问的问题称为单点登录(SSO),可以通过几种方式实现。例如,关于这个问题有很多主题:但它们都因个人需求而有所不同 在您的情况下,您有不同的域(因此您不能在它们之间共享cookie),您混合了http和https(这可能是一个问题),并且您有许多应用程序,因此您不会进行很多更改 所以我建议考虑罗伯特的建议:
如果您无法更改到支付网站的链接,则可以尝试跳过步骤2并通过其ip验证用户,但这可能太危险。基于端口的验证是Microsoft提供的一种集中验证服务,为成员网站提供单次登录和核心配置文件服务。有关详细信息,请参阅以下Microsoft网站:
如果无法在基础架构级别实现单一登录,则应使用允许不同受信任方的应用程序通过声明共享身份验证的 这可以直接使用(SAML)或使用以下产品/标准完成:
此外,您还可以查看哪些共享身份验证方案比SSO或身份联合更具共享性。会话在访问不同的域名,甚至子域时会过期。这很有效。但是,如果有人从网站a复制合法(加密)令牌,在另一个浏览器/计算机中打开网站B并发布(加密)令牌,会发生什么情况?您可以在加密值中使用一些计算机/浏览器信息,然后在解密时验证此人仍在同一台计算机上。通过SSL发布应该有另一层加密。您可以使用另一个选项实现OAuth,如建议的smirnov。另一个选项,因为它们都在相同的IIS设置和相同的服务器上运行,为什么不将购物车设置为主站点下的虚拟目录?这样你就不必担心通过网络发送数据了。这可能需要一些返工,但可能是今后最简单的解决办法。你为什么不接受罗伯茨的建议呢?这是一个很好的方法,你不能在不同的域之间共享会话,否则你就可以窃取别人的facebook会话或其他东西。无论什么时候你要付钱,都要照罗伯特说的去做。在数据库中存储与该用户相关的随机字符串。加密它,通过SSL访问你的新网站,解密它并检查数据库中的用户。也要检查时间(比如在创建后1-2分钟内)你听说过所谓的会话桥吗?@ TealMe:不,我没有。因为这是敏感信息,我会考虑在数据库中保存会话状态,如果看起来可行的话,从另一个应用程序访问它。对于不敏感的人来说,cookie是一种选择。@TechGirl:这个想法是正确的。但为此,我需要一种方法来查找属于同一浏览器用户/浏览器的两个会话。这看起来很简单。但是,如果有人从网站a复制了合法的令牌,在另一个浏览器/计算机中打开网站B并发布令牌,会发生什么情况?应该使用(验证IP+检查引用者+使用发布)的组合。您还可以在验证用户时从数据库中删除GUID,以便不能再次使用相同的GUID(url)。@SalmanA:您不需要