2013-07-10 2 views
0

내 웹 사이트에서 LinkedIn 인증을 받고 싶습니다. API가 원하는 정보를 반환하면 계정 만들기 기능이 작동합니다. 그러나 사이트에 로그인하려고 할 때 몇 가지 문제가있는 것 같습니다.Liferay에서 login() 함수를 호출 할 때 UserEmailAddressException이 발생했습니다.

LoginUtil.login 메서드를 호출하면 UserEmailAddressException이 표시되는 것으로 보입니다.

at com.liferay.portal.service.impl.UserLocalServiceImpl.authenticate(UserLocalServiceImpl.java:2480).

그것은 여기

if (authType.equals(CompanyConstants.AUTH_TYPE_EA)) { 
    if (!Validator.isEmailAddress(login)) { 
     throw new UserEmailAddressException(); 
    } 
} 

에 실패 내 코드는 다음과 같습니다

boolean rememberMe = true; 
String authType = CompanyConstants.AUTH_TYPE_EA; 
try { 
    LoginUtil.login(request, response, 
      String.valueOf(user.getUserId()), user.getPassword(), rememberMe, authType); 
    } 
    catch (UserEmailAddressException ueae) { 
     ueae.printStackTrace(); 
    } 

사용자가 이메일 주소를 통해 인증, 그래서 내가 그 올바른 인증 유형이어야합니다 같아요?

portal-ext.properties에 company.security.auth.type=emailAddress을 추가했으나이 설정을 지정하지 않으면 같은 오류가 발생합니다.

Liferay 설명서가 만족스럽지 않으므로 login() 함수에 대한 적절한 호출을 수행하여 내 사용자가 LinkedIn 계정으로 로그인하는 방법을 알고 싶습니다.

답변

1

당신이주는 코드의 양에서이 질문에 대답하기가 어렵습니다.

우선 : 설명서 정보. LoginUtil을 사용하여 판단하면, 귀하는 귀하의 기능을 구현하기 위해 Liferay의 내부 코드를 수정하는 것 같습니다. 이것은 안정적인 것으로 보장되지 않고 마지막에 문서화 될 가능성이 높은 내부 API입니다 (API 문서가 많이 개선되었지만 주로 외부 공용 API에 관한 내용 임).

Liferay가 다른 외부 싱글 사인온 (SSO) 시스템을 구현하는 데 사용하는 ServletFilters 구현을 살펴볼 수 있습니다. 많은 고객/사용자가이를 성공적으로 구현했습니다 (해당 문서의 상태를 살펴 보지 않았지만 찾을 수있는 여러 가지 SSO 구현이 있음)

또한, 어떤 이메일 주소가 도움이 될지 궁금합니다. 유효하지 않음 - 코드에서 user.getUserId() (숫자)으로 전화를 거는 것처럼 보이지만 로그인을 이메일을 통해 요청했다고 명시했습니다.

마지막으로 UI를 통해 로그인 방법을 구성한 경우 데이터베이스에 저장되며 해당 설정이 적용됩니다. ControlPanel/Portal/Portal Settings/Authentication/"사용자 인증 방법"을 확인하십시오. 설정에서 실제로 이메일 주소를 묻는 지 확인하십시오.

+0

예, 정확합니다, 코크 씨. 전자 메일 주소 대신 사용자 ID를 사용하는 것은 저의 실수였습니다. 고맙습니다! –

관련 문제