liferay从自定义portlet验证密码

时间:2014-09-24 13:18:43

标签: liferay

我想在自定义portlet中检查密码。

我在UserLocalServiceImpl中看到了这个:

PasswordPolicy passwordPolicy = passwordPolicyLocalService.getDefaultPasswordPolicy(companyId);
PwdToolkitUtil.validate(companyId, 0, password1, password2, passwordPolicy);

我试图在自定义portlet中使用它...我可以使用passwordPolicy,但我无法访问使用PwdToolkitUtil ....错误是“导入com.liferay.portal.secutiry.pwd.PwdToolkitUtil无法解决“。

问题出在哪里?是否有替代方法可以从自定义portlet中检查门户​​策略的密码?

4 个答案:

答案 0 :(得分:1)

你可以用作:

PasswordTrackerLocalServiceUtil.isValidPassword(long userId, String newClearTextPwd)

此API将检查Liferay PasswordPolicies

答案 1 :(得分:0)

PwdToolkitUtil不在API中。因此,您可以查看其源代码并自己实现等效功能。在课堂上没有很多代码,因此重复它可能不会太糟糕。

答案 2 :(得分:0)

查看以下类/方法。需要userId和密码(不加密,只是纯文本)。

com.liferay.portal.service.PasswordTrackerLocalServiceUtil

public boolean isSameAsCurrentPassword(long userId, String newClearTextPwd)

答案 3 :(得分:0)

这在Liferay 7.1上对我有效

    @Override
    protected void doProcessAction(ActionRequest actionRequest,
                                       ActionResponse actionResponse) throws Exception {

String password1 = ParamUtil.getString(actionRequest, "password1", "");
String password2 = ParamUtil.getString(actionRequest, "password2", "");

     try {
                ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
                long userId = UserLocalServiceUtil.authenticateForBasic(themeDisplay.getCompanyId(), authType, login, current);
                PasswordPolicy passwordPolicy = PasswordPolicyLocalServiceUtil.getPasswordPolicyByUserId(userId); //.getDefaultPasswordPolicy(companyId);
                ClassLoader portalClassLoader = PortalClassLoaderUtil.getClassLoader();
                Class<?> pwdToolkitUtilClass = portalClassLoader.loadClass("com.liferay.portal.security.pwd.PwdToolkitUtil");
                MethodKey methodKey = new MethodKey(pwdToolkitUtilClass, "validate", long.class, long.class, String.class, String.class, PasswordPolicy.class);
                PortalClassInvoker.invoke(methodKey, themeDisplay.getCompanyId(), userId, password1, password2, passwordPolicy);
     } catch (UserPasswordException e) {
                SessionErrors.add(actionRequest, e.getClass(), e);
     }
    }