- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难清楚地了解 Joomla(我使用的是 3.6.x 版)身份验证和登录。
我已经看到许多关于如何从外部来源“登录”Joomla 站点的方法和片段(这正是我感兴趣的地方)。
但是我在测试和测试(以及更多测试)之后看到的是,在一天结束时,您根本就没有登录。
您可能能够验证尝试登录的用户是否是有效的注册用户,并且能够检索他的姓名、电子邮件、电话和诸如此类等等,但在 Joomla 后端,该用户仍未登录。< br/>我在管理员面板中创建了一个全新的用户(它显示用户从未访问过该站点),我用外部 PHP 编写了登录脚本,我对新用户进行了十几次“身份验证”,当我回到后端时,用户仍然从未去过那里。一次都没有。
我想,这也意味着我无法检索“事件”用户列表,因为 Joomla 无法将他们视为已登录用户。
所以我想要实现的是用户能够从 Joomla 站点外部登录并能够知道他们是否登录。所以我可以获得他们的列表并为他们分配任务。
我想这与 token 和cookie有关。但是无论我朝那个方向搜索多少,我都找不到任何例子来启发我。
非常感谢任何帮助(特别是“脚本”帮助)。
谢谢。
<?php
if (version_compare(PHP_VERSION, '5.3.1', '<')) {
die('Your host needs to use PHP 5.3.1 or higher to run this version of Joomla!');
}
define('_JEXEC', 1);
if (file_exists(__DIR__ . '/defines.php')) {
include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
$app = JFactory::getApplication('site');
$app->initialise();
require_once (JPATH_BASE .'/libraries/joomla/factory.php');
$credentials['username'] = $_GET["usrname"];
$credentials['password'] = $_GET["passwd"];
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('id, password')
->from('#__users')
->where('username=' . $db->quote($credentials['username']));
$db->setQuery($query);
$result = $db->loadObject();
if ($result) {
$match = JUserHelper::verifyPassword($credentials['password'], $result->password, $result->id);
if ($match === true) {
$user = JUser::getInstance($result->id);
$session =& JFactory::getSession();
echo "<p>Your name is {$user->name}, your email is {$user->email}, and your username is {$user->username}</p>";
$session->set('userid', $user->id);
if ($user->guest) {
echo 'SORRY, NO LOGIN YET...';
} else {
echo 'user is LOGGED IN !';
}
} else {
die('Invalid password');
}
} else {
die('Cound not find user in the database');
}
?>
最佳答案
Joomla 登录在身份验证插件中处理,通过编写并启用您自己的插件,您可以绕过 token 验证并允许通过简单的获取请求登录。
请记住 Joomla!将管理员 和前端 session 分开(您可以登录到管理员,并以访客身份浏览站点)。此外,用户需要具有经理、管理员或 super 用户组成员身份才能登录后端。
管理员
管理员登录的常见用例是运行后台脚本。为了绕过后端的 Joomla 身份验证,请检查/cli 文件夹,因为它包含一些示例。
前端
前端登录的用例要广泛得多:服务器到服务器的通信、应用程序身份验证、单点登录等。
执行前端身份验证的最佳做法是构建您自己的身份验证插件。身份验证将由 onUserAuthenticate() 函数实现。查看 /plugins/authentication/joomla/
插件作为示例。
如果你需要额外的数据来让认证插件发挥它的魔力(例如远程 token /api key 来使用远程服务进行认证)你可能想要检查用户插件组,例如 /plugins/user/profile
插件。
验证上次登录日期/时间
前端方法应该会自动工作,在管理员控制面板中显示用户已登录。
但是,如果您使用 CLI 方法登录到管理员,这可能无法正常工作,具体取决于您执行登录的方式。
关于cookies - Joomla 3.6 身份验证和登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603058/
在 JSF2 应用程序中遇到验证属性的问题时,有两种主要方法。 使用 Annotation 在 ManagedBean 上定义验证 @ManagedBean public class MyBean {
我想实现一个不常见的功能,我认为 jquery 验证插件将是最好的方法(如果您在没有插件的情况下建议和回答,我们也会欢迎)。我想在用户在输入字段中输入正确的单词后立即隐藏表单。我试过这个: $("
我有几个下拉菜单(类名为month_dropdown),并且下拉菜单的数量不是恒定的。我怎样才能为它们实现 NotEqual 验证。我正在使用 jQuery 验证插件。 这就是我写的 - jQuery
我设法制作了这个网址验证代码并且它起作用了。但我面临着一个问题。我认为 stackoverflow 是获得解决方案的最佳场所。 function url_followers(){ var url=do
我目前正在使用后端服务,该服务允许用户在客户端应用程序上使用 Google Games 库登录。 用户可以通过他们的 gplay ID 向我们发送信息,以便登录或恢复旧帐户。用户向我们发送以下内容,包
我正在尝试验证输入以查看它是否是有效的 IP 地址(可能是部分地址)。 可接受的输入:172、172.112、172.112.113、172.112.113.114 Not Acceptable 输入
我从 Mongoose 验证中得到这条消息: 'Validator failed for path phone with value ``' 这不应该发生,因为不需要电话。 这是我的模型架构: var
我一直在尝试使用Python-LDAP (版本 2.4.19)在 MacOS X 10.9.5 和 Python 2.7.9 下 我想在调用 .start_tls_s() 后验证与给定 LDAP 服务
我正在处理一个仅与 IE6 兼容的旧 javascript 项目(抱歉...),我想仅在 VS 2017 中禁用此项目的 ESLint/CSLint/Javascript 验证/CSS 验证。 我知道
我正在寻找一种方法来验证 Spring 命令 bean 中的 java.lang.Double 字段的最大值和最小值(一个值必须位于给定的值范围之间),例如, public final class W
我正在尝试在 springfuse(JavaEE 6 + Spring Framework (针对 Jetty、Tomcat、JBoss 等)) 和 maven 的帮助下构建我的 webapps 工作
我试图在我们的项目中使用 scalaz 验证,但遇到了以下情况: def rate(username: String, params: Map[String, String]): Validation
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
我有一个表单,人们可以单击并向表单添加字段,并且我需要让它在单击时验证这些字段中的值。 假设我单击它两次并获取 2 个独立的字段集,我需要旋转 % 以确保它在保存时等于 100。 我已放入此函数以使其
在我的页面中有一个选项可以创建新的日期字段输入框。用户可以根据需要创建尽可能多的“截止日期”和“起始日期”框。就像, 日期_to1 || date_from1 日期到2 ||日期_from2 date
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
有没有办法在动态字段上使用 jquery 验证表单。 我想将其设置为必填字段 我正在使用 Jsp 动态创建表单字段。 喜欢 等等...... 我想使用必需的表单字段验证此表单字段。 最佳答
嗨,任何人都可以通过提供 JavaScript 代码来帮助我验证用户名文本框不应包含数字,它只能包含一个字符。 最佳答案 使用正则表达式: (\d)+ 如果找到匹配项,则字符串中就有一个数字。 关于J
我有两个输入字段holidayDate和Description(id=tags) $(document).ready(function() {
我遇到了这个问题,这些验证从电子邮件验证部分开始就停止工作。 我只是不明白为什么即使经过几天的观察,只是想知道是否有人可以在这里指出我的错误? Javascript部分: function valid
我是一名优秀的程序员,十分优秀!