liferay从自定义portlet验证密码

问题描述 投票:1回答:4

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

我在UserLocalServiceImpl中看到过这个:

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

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

问题出在哪儿?是否可以使用自定义portlet检查门户策略的密码?

liferay
4个回答
1
投票

你可以用作:

PasswordTrackerLocalServiceUtil.isValidPassword(long userId, String newClearTextPwd)

此API将检查Liferay PasswordPolicies


0
投票

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


0
投票

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

com.liferay.portal.service.PasswordTrackerLocalServiceUtil

public boolean isSameAsCurrentPassword(long userId, String newClearTextPwd)

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);
     }
    }
© www.soinside.com 2019 - 2024. All rights reserved.