我有一个Joomla网站和另一个基于MVC ASP.NET Web应用程序。我希望在登录Joomla网站后自动登录到另一个应用程序。
例如,在成功登录Joomla网站后,是否可以自动向这个基于ASP的应用程序发出新的请求,并将用户ID和密码(当然是加密的)嵌入在查询字符串中。然后这个ASP应用程序会获取该信息并解密密码并执行自动登录吗?
以下是如何使用Web服务将Joomla登录会话从一个网站共享到另一个网站?一个Joomla网站与另一个Joomla网站的示例。
我希望看到解释解决方案的代码示例。
我不熟悉ASP .NET MVC,但是您可以通过参考为Joomla创建插件来拦截Joomla登录事件。 它可以是一个非常简单的用户插件,您可以使用它访问许多事件,尤其是 OnUserLogin
和 OnUserAfterLogin
. 您在这两个事件中的任何一个中输入的代码是使用 CURL 或任何其他技术来发布 ASP 请求的地方。
非常基本的代码结构:
<?php
defined('_JEXEC') or die;
class Plgtest extends JPlugin {
public function onUserLogin($user, $options = array()) {
// The user has now logged into Joomla - all user info is available in variable $user
// Do some PHP stuff here to "issue a new request to this ASP based app"
// Example PHP code for ASP login at https://stackoverflow.com/questions/25539787/how-to-post-asp-net-login-form-using-php-curl
}
}
?>
有关从 PHP 登录到 ASP 的 PHP 代码,请参阅此问题。
我不
熟悉Joomla或 ASP.NET,但我认为最简单的方法是将会话存储在公共位置。这可能是两个系统都可以访问和读取会话数据的数据库。
此解决方案依赖于这样一个事实,即其中一个网站作为另一个网站的子域存在,或者系统共享的cookie不能被两个网站读取。查看此链接以获取解决此限制的另一种解决方案。这是一个混乱的解决方案,但有可能。
Cookie 限制解决方法(堆栈溢出)
正如我所说,我不知道这两个框架,但我想你必须修改两个系统中读取/写入会话的方式。
希望这可以帮助您朝着正确的方向前进。
此致敬意。