0

我正在尝试使用 Liferay 的用户实体通过编写代码来添加用户。密码未加密,因此登录失败。代码粘贴在下面。

    int countOfUsr = UserLocalServiceUtil.getUsersCount();
    User user = UserLocalServiceUtil.createUser(countOfUsr + 1);
    Date date = new Date();
    user.setCompanyId(countOfUsr + 1);
    user.setCreateDate(date);
    user.setModifiedDate(date);
    user.setDefaultUser(false);
    user.setContactId(countOfUsr + 1);
    user.setPasswordEncrypted(true);
    user.setAgreedToTermsOfUse(true);
    user.setPassword("123");
    user.setPasswordReset(false);
    user.setPasswordModifiedDate(date);
    user.setReminderQueryQuestion("what-is-your-father's-middle-name");
    user.setReminderQueryAnswer("daddad");
    user.setGraceLoginCount(0);
    user.setScreenName("shibu");
    user.setFirstName("SHIBU");
    user.setEmailAddress("shibu@liferay.com");
    user.setFacebookId(0);
    user.setOpenId("");
    user.setPortraitId(0);
    user.setLanguageId("en_US");
    user.setTimeZoneId("GMT");
    UserLocalServiceUtil.addUser(user);
  1. 如何修改代码以正确保存用户?
  2. pssword加密该怎么做?
  3. 如何为 user.setDigest(arg) 赋值?
4

2 回答 2

1

指定加密算法以加密portal-ext.properties文件中的密码。

例如,

passwords.encryption.algorithm=SHA //查看portal.properties中的不同算法

于 2013-01-24T03:32:27.997 回答
0

我认为你应该使用UserLocalServiceUtil.addUser(whole bunch of arguments)而不是UserLocalServiceUtil.addUser(User). 它会做你想做的事:创建你的用户并加密密码。

方法签名是:

public User addUser(
        long creatorUserId, long companyId, boolean autoPassword,
        String password1, String password2, boolean autoScreenName,
        String screenName, String emailAddress, long facebookId,
        String openId, Locale locale, String firstName, String middleName,
        String lastName, int prefixId, int suffixId, boolean male,
        int birthdayMonth, int birthdayDay, int birthdayYear,
        String jobTitle, long[] groupIds, long[] organizationIds,
        long[] roleIds, long[] userGroupIds, boolean sendEmail,
        ServiceContext serviceContext)
    throws PortalException, SystemException

注意:如果您的密码不验证密码策略,它会抛出一个UserPasswordException

于 2013-04-19T02:42:15.393 回答