我有一个Joomla网站和另一个基于ASP.NET MVC的网络应用程序。我希望在登录Joomla网站后自动登录其他应用程序。
例如,在成功登录Joomla网站后,可能会自动向此基于ASP的应用程序发出新请求,其中包含查询字符串中嵌入的用户ID和密码(当然加密)。然后这个ASP应用程序将获取该信息并解密密码并执行自动登录?
这里有How to use web services to share Joomla login session from one website to another?一个Joomla网站和另一个Joomla网站的示例。
我希望看到解释解决方案的代码示例。
答案 0 :(得分:1)
我不熟悉ASP .NET MVC,但您可以通过引用Creating a Plugin for Joomla来拦截Joomla登录事件。它可以是非常简单User Plugin,您可以使用它访问许多事件,尤其是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代码,请参阅this question。
答案 1 :(得分:0)
我不熟悉Joomla或ASP.NET,但我认为最简单的方法是将会话存储在公共位置。这可以是两个系统都可以访问和读取会话数据的数据库。
此解决方案依赖于以下事实:其中一个网站作为另一个网站的子域存在,或者系统共享的cookie无法被两者读取。检查此链接以获取解决此限制的其他解决方案。这是一个混乱的解决方案,但可能。
Cookie restriction workaround (Stack Overflow)
正如我所说,我不知道任何一个框架,但我想你会不得不修改两个系统中会话的读/写方式。
希望这可以帮助你朝着正确的方向前进。
最好的问候。