liferay通过curl登录

时间:2016-11-03 21:31:50

标签: curl post liferay

我在liferay实例上有几个用户帐户需要注册。我在保险库中有他们的用户名和密码,并希望编写他们的注册脚本,因为使用带有这些用户名和密码的webservices似乎与登录一次有关。

我一直在尝试屏幕抓取我的登录屏幕并生成curl的帖子请求,但它无法正常工作。

这是我的“单行”

password=$(grep "PASSWORD" /etc/default/website_creds | cut -d= -f2);
username=$(grep "USERNAME" /etc/default/website_creds | cut -d= -f2);
curl -s https://mysite.obfuscated_company_name.com |\
    grep -o 'form action="https://mysite.obfuscated_company_name.com/home;jsessionid.*Flogin%2Flogin"' |\
    grep -o "https.*Flogin%2Flogin" |\
    sed "s/&/\&/g" |\
    while read url;\
     do curl "$url&_58_login=$username&_58_password=$password";\
     done

这有效吗?

1 个答案:

答案 0 :(得分:3)

我认为如果不使用Liferay,你会使用它的JSON-WS API,你会更高兴。让我们看看它是否会对你有帮助。

找到要使用的操作

只需访问https://mysite.obfuscated_company_name.com/api/jsonws即可。如果您获得了成功,您将在浏览器中看到类似的内容:

The JSON-WS initial page. There is an important "Search" input in it.

在“搜索”框中输入add-user。你应该得到这样的东西:

The add-user options

您将点击“用户”部分下的任意add-user选项。我推荐第二个,这个更短。

方法页面

现在,你得到一个这样的页面:

add-user page

这基本上是来自用户服务的UserService.addUser()方法的文档。

有趣的部分是可以在页面下方找到的表格:

Form to call the method

此表单的每个字段都是UserService.addUser()的参数。当我们提交此表单时,我们调用此方法,将新用户保存在数据库中!

填写表格

所以,为了理解它是如何工作的,让我们填写表格:

  • 首先,您需要公司ID,您可以通过在Liferay数据库中调用select companyId from Company;轻松找到。
  • autoPassword选项应该是false,因为我们确实要定义密码(它们来自文件,对吗?)
  • 由于这是一个实验,我们将使用一些任意密码。在password1中输入任意内容,然后在password2中重复此操作。 **这可能看起来有点令人费解,因为必须输入两次。你是对的,是的。较旧的Liferay API非常复杂。抱歉。但它比报废更好!
  • autoScreenname也应该是假的。
  • screenname字段中输入一些随机屏幕名称,仅用于此测试。
  • emailAddress,发送电子邮件。
  • facebookId是不必要的,但由于它是一个数字,我们必须在其上加0。
  • openIdlocale可以为空。
  • 给它一些firstNamelastName
  • prefixIdsuffixId可以为0.
  • 再次,在birthday字段中添加一些值。它们是数字的,所以我们需要填充它们。是的,这是令人费解的。

现在点击“调用”。如果出现任何问题,“结果”选项卡中将显示一条错误消息。如果一切顺利,而不是错误,您将以JSON形式获得结果。像这样:

enter image description here

现在,如果您转到“控制面板>用户>用户和组织”,voilà,那就是您的用户。

使用cURL

当然,表单本身不会对您的脚本有所帮助。好处是,除了“结果”选项卡之外,还有一个“卷曲示例”选项卡。它将包含以下内容:

    curl http://localhost:8080/api/jsonws/user/add-user \
      -u test@liferay.com:test \
      -d companyId=20114 \
      -d autoPassword=false \
      -d password1='pass' \
      -d password2='pass' \
      -d autoScreenName=true \
      -d screenName='user2' \
      -d emailAddress='liferay.for.testing+2@gmail.com' \
      -d facebookId=0 \
      -d openId='' \
      -d locale= \
      -d firstName='user' \
      -d middleName='' \
      -d lastName='2' \
      -d prefixId=0 \
      -d suffixId=0 \
      -d male=true \
      -d birthdayMonth=1 \
      -d birthdayDay=1 \
      -d birthdayYear=1970 \
      -d jobTitle='' \
      -d groupIds= \
      -d organizationIds= \
      -d roleIds= \
      -d userGroupIds= \
      -d sendEmail=true

这个是你的curl命令。你将不得不改变一些东西:

  • -u test@liferay.com:test替换为您网站的真实管理员用户。
  • -d password1='pass' -d password2='pass'中的“pass”替换为变量。
  • -d username选项相同。
  • 你可能需要补充一些名字和电子邮件,因为它们是强制性的......

然而,这些都是细节。 API可以帮助您解决困难问题。