2013-12-19 1 views
1

나는 이런 식으로 뭔가가 필요 외부 업체에 연결된 계정이 있는지 확인하는 방법 :인증 된 사용자가 일반 ASP.NET ID 계정 또는

if (Request.IsAuthenticated) 
{ 
    var user = await AccountManager.UserManager.FindByIdAsync(User.Identity.GetUserId()); 

    if (user != null) 
    { 
     if (regular account) 
     { 
      // do this 
     } 

     if (external provider account) 
     { 
      // do that 
     } 
    } 
} 

내가 디버거에서이 발견이 있지만 그렇게하지 검사에 사용할 수 있는지 확인하십시오. "구글"

+0

는 "가치 란 ... 시간에 같은 버킷에 머물하지 않을 수 있습니다 LoginProvider "? 그것이 형식 이름이라면 아마도 그 대답 일 것입니다. – LiverpoolsNumber9

+0

LoginProvider는 문자열입니다. 나는 LoginProvider를 사용할 수 없다. 테스트 도중에 객체가 객체의 인스턴스로 설정되지 않았습니다. 분명히 신뢰할 수 없습니다. 확인하는 다른, 더 낫고 안전한 방법이 있어야합니까? – PussInBoots

답변

0

을 반환

user.Logins.FirstOrDefault().LoginProvider 

그래서 모든 사용자는 명확하게하기 위해 암호 및 외부 로그인을 할 수 있습니다. 새로운 사용자가 google/facebook에서 돌아 오면 로컬 사용자 (로그인을 연결하는)를 만들라는 메시지가 표시됩니다. 사용자가 암호 만 있고 다른 로그인이없는 경우를 테스트하려는 경우 사용자에게 연관된 로그인이 있는지 확인할 수 있습니다.

UserManager.GetUserLogins().Count == 0 

명심, 사용자는 자신의 계정 연결을 해제하고, 또한 관리 페이지를 통해 계정을 연결, 그래서 그들은 반드시

관련 문제