gpt4 book ai didi

flash - 使用 Joomla 和 Flash 进行单点登录

转载 作者:行者123 更新时间:2023-12-02 00:43:49 25 4
gpt4 key购买 nike

我有一个 Joomla 网站和一个 Flash 应用程序(在 Flex 中,如果重要的话)。 Flash 应用程序使用 BlazeDS 作为后端。所有的东西都托管在同一个服务器、同一个域中。

有没有办法为上述环境实现单点登录?

更新:

我想要的是:如果用户登录 Joomla,他们将自动登录 Flash 应用程序。反之亦然。

最佳答案

您需要创建一个组件来处理登录。

实际的登录代码非常简单。这是我们为 Joomla1.5 开发的组件的示例。

/**
* Log into Joomla
* @return Bool Login Status
* @param $username String
* @param $password String
*/
function login($username, $password, $remember = false) {
if ($username && $password) {
$mainframe =& JFactory::getApplication();
return $mainframe->login(
array('username'=>$username, 'password'=>$password),
array('remember'=> $remember, 'silent'=>true)
);
}
return false;
}

如果您不想创建完整的组件,则可以使用此页面中的 PHP 组件:http://www.fijiwebdesign.com/products/joomla-php-pages.html

无论您使用哪种方式,重要的是如何生成用于登录 Joomla 的 URL。它看起来像:

example.com/index.php?option={com_component}&template=component&no_html=1

其中 {com_component} 是您的组件的名称。

在使用 Joomla PHP 组件的情况下,它看起来像:

example.com/index.php?option=com_php&Itemid={itemid}&template=component&no_html=1

其中 Itemid 是您为 PHP 组件创建的页面的菜单 Itemid。它是在您为 PHP 页面的 PHP 组件创建菜单项后生成的。

&template=component&no_html=1 确保只加载组件 HTML,no_html 表示它不会加载任何 HTML 声明。

因此,您可以拥有一些代码,例如返回 JSON 或 XML 响应,您的 Flex 应用程序可以通过 URLLoader 或类似请求使用这些代码。或者只是字符串 TRUE 或 FALSE。

更新:

Ooops, sorry that's not want I want. I want if the user logged in at Joomla, they will be auto logged in at the Flash app. Same vice versa.

我假设您想将您的用户帐户保留在 Joomla 数据库中,但如果您计划将用户数据存储在其他地方,则必须具体说明。

以下是检查用户是否已经登录 Joomla 的方法:

$User =& JFactory::getUser();
if (!$User->guest) {
// user is logged in
} else {
// user is not logged in
}

以下是获取用户 session ID 的方法:

$Session =& JFactory::getSession();
$sessid = $Session->getId();

获取 session 名称:

session_name();

将用户和 session 数据从 Joomla 发送到 Flash 的示例:

$User =& JFactory::getUser();
$Session =& JFactory::getSession();
// for example use JSON which Flex undertands
echo json_encode((object) array('user'=>$User, 'session'=>$Session, 'name'=>session_name ());

如何实现用户和 session 数据的检索由您决定。您可以让 Flash 向 Joomla 发送 HTTP 请求,或者您可以使用 flash vars 或 ExternalInterface ( http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html )。

更重要的部分是在 Flex 和浏览器之间传递您的 session 名称和 ID。您需要 session 名称,以便您可以在浏览器中设置 session cookie。 cookie 的名称应与 session 名称相同,其值应为 session ID。

您可以使用 ExternalInterface 通过浏览器 JavaScript 设置 cookie。

设置 cookie 后,Flex 和浏览器将共享同一个用户 session ,并将显示已登录的用户。

您也可以在 BlazeDS 和 Joomla 之间做同样的事情,然后让 Flash 与 BlazeDS 对话以获取 session 信息。

另一方面,如果用户通过 Joomla 登录,则在嵌入 Flash 时使用 flashvars 将该 session 传递给 Flash,或使用 ExternalInterface。

关于flash - 使用 Joomla 和 Flash 进行单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1573670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com