2016-10-04 6 views
1

ビューのユーザーとパスワードがわかりました。このデータがliferayのデータで正しいかどうかを確認します。正しいときは自分のメソッドが1を返します。ログインフックなしのライフタイムでの認証

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"); 
    } 
+0

liferayで使用されている認証方法についてportal-srcを掘り下げようとしましたか?サーバーログでどのようなエラーが発生していますか –

答えて

1

これはあなたが自動ログインフックを必要とする場合のようです。しかし、私はLiferayのに成功したログインを作成する方法がわからない、これが私の方法です。あなたはトークンのように、ユーザー・セッション内でインジケータを使用して、カスタム・ロジックでそれを確認することができます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; 
} 

この解決策も有効であるLiferayの7で、あなただけのようにコンポーネントが必要LR6の場合、OSGiを使用していないという違いがあるため、SDKを使用してフックを作成する必要があります。

関連する問題