我在 Liferay 中实现了一个单独的更改密码模块,特别是扩展了登录 portlet,使其在登录时具有更改密码。
我尝试调用 struts 操作 enterprise_admin/edit_user 但它不起作用但我通过获取该用户的密码策略并检查该类中的 minUpperCase 等实现了我自己的密码检查器,但有没有一种方法可以检查语法没有遍历密码并计算 minUpperCase 等?
Liferay 是否有特定的方法来检查密码是否适用于密码策略?
我在 Liferay 中实现了一个单独的更改密码模块,特别是扩展了登录 portlet,使其在登录时具有更改密码。
我尝试调用 struts 操作 enterprise_admin/edit_user 但它不起作用但我通过获取该用户的密码策略并检查该类中的 minUpperCase 等实现了我自己的密码检查器,但有没有一种方法可以检查语法没有遍历密码并计算 minUpperCase 等?
Liferay 是否有特定的方法来检查密码是否适用于密码策略?
你可以试试这个。这就是他们在 UserLocalService 中所做的
PasswordPolicy passwordPolicy = passwordPolicyLocalService.getDefaultPasswordPolicy(companyId);
PwdToolkitUtil.validate(companyId, 0, password1, password2, passwordPolicy);
如果您没有看到 PwdToolkitUtil 您可以尝试这种方式:
Object[] arguments= {user.getCompanyId(), user.getUserId(), password, password, passwordPolicy};
MethodKey methodKey = new MethodKey("com.liferay.portal.security.pwd.PwdToolkitUtil", "validate", long.class, long.class, String.class , String.class, PasswordPolicy.class);
PortalClassInvoker.invoke(false, methodKey, arguments);
如果您只是因为“登录时更改密码”功能而自定义登录,您也可以只使用门户的默认行为UserLocalServiceUtil.updatePassword
,而不是第四个参数:
public static User updatePassword(long userId,
String password1,
String password2,
boolean passwordReset,
boolean silentUpdate)
throws PortalException,
SystemException
Updates the user's password, optionally with tracking and validation of the change.
Parameters:
userId - the primary key of the user
password1 - the user's new password
password2 - the user's new password confirmation
passwordReset - whether the user should be asked to reset their password the next time they login
silentUpdate - whether the password should be updated without being tracked, or validated. Primarily used for password imports.
Returns:
the user
Throws:
PortalException - if a user with the primary key could not be found
SystemException - if a system exception occurred