2

ビューのユーザーとパスワードを取得し、ライフレイのデータでこのデータが正しいかどうかを確認します。正しい場合、検証がtrueの場合、メソッドは1を返しますが、作成方法がわかりませんliferay へのログインが成功した場合、これが私の方法です。

try {
        long companyId = PortalUtil.getDefaultCompanyId();
        System.out.println(companyId + " id company");
        User user1;
        try {
            user1 = UserLocalServiceUtil.getUserByEmailAddress(companyId,     name);
            long cmp = user1.getCompanyId();
            Company company = CompanyLocalServiceUtil.getCompany(cmp);
            int a =      UserLocalServiceUtil.authenticateByUserId(company.getCompanyId(), user.getId(), pass, null,
                    null, null);
            if (a == 1) {

                System.out.println("Log in successful");

            }
        } catch (PortalException e) {
            e.printStackTrace();
        } catch (SystemException e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        System.out.println("algo salio mal");
    }
4

1 に答える 1

1

これは、自動ログイン フックが必要な場合のようです。Liferay 7 では、 https ://www.e-systems.tech/blog/-/blogs/autologin-in-liferay-7 のようなコンポーネントが必要です。

トークンのように、ユーザー セッション内でインジケーターを使用して、カスタム ロジックで確認できます。

@Override
protected String[] doLogin(final HttpServletRequest request, final HttpServletResponse response) throws Exception {

    final long companyId = portal.getCompanyId(request);
    final HttpSession session = request.getSession();

        // code your logic here..

    final String[] credentials = new String[3];

    credentials[0] = String.valueOf(user.getUserId());
    credentials[1] = user.getPassword();
    credentials[2] = Boolean.FALSE.toString();

    return credentials;
}

このソリューションは LR6 にも有効です。違いは、そこでは OSGi を使用していないため、SDK を介してフックを作成する必要があることです。

于 2016-10-23T11:53:32.480 に答える