如何在Liferay 6.1中保存用户时加密密码?

时间:2013-01-23 07:37:44

标签: liferay-6 liferay-ide

我正在尝试使用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)赋予价值?

2 个答案:

答案 0 :(得分:1)

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

例如,

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

答案 1 :(得分: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