2

我有另一个使用 liferay 用户数据库的网络应用程序。但在用户可以访问该网站之前,他需要先进行身份验证。如何实现此功能,我尝试使用电子邮件/密码搜索 WS api 进行身份验证,但没有找到。

此外,用户应该仍然能够登录到 liferay 门户。并且登录应该像另一个liferay web 服务。

有什么提示吗?

嗯,因为我可以访问数据库,也许一种方法是散列客户端提供的密码?并根据存储在数据库中的值进行验证。

发现 PwdEncryptor 类是负责加密密码的类,不幸的是它与 liferay 有太多的依赖关系,我无法将其拉出:-?

谢谢

4

2 回答 2

3

这可能不是最好的方法,但这个解决方案可能是您正在寻找的。它只需要用户的公司 ID、电子邮件和密码。就我而言,我有来自 liferay 的默认公司 ID。

要验证电子邮件/密码,您可以在我的情况下调用其他 liferay 网络服务:get-user-id-by-email-address。然后通过 HTTP Basic 对用户进行身份验证。当使用 jersey rest webservice 调用 liferay web 服务时,您可以这样编写代码:

String url += String.format("user/get-user-id-by-email-address?companyId=%s&emailAddress=%s",
                properties.getProperty("default.company.id"), email);

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(email, password));
WebResource service = client.resource(url);
ClientResponse response = service.accept("application/json").post(ClientResponse.class);

if (response.getClientResponseStatus() == com.sun.jersey.api.client.ClientResponse.Status.OK) {
 //valid user
} else {
  //invalid user
}
于 2012-06-20T06:20:52.130 回答
1

您可以通过将 Liferay 配置为使用 CAS 或 OpenSSO 在您的站点上实施单点登录解决方案。有多种来源:OpenSSO-LiferayCAS-Liferay

于 2012-06-13T13:32:44.640 回答