2015-01-27 2 views
1

저는 ASP.NET Identity를 사용하는 MVC 5 웹 응용 프로그램을 만들고 있습니다.ASP.NET에서 클레임이있는 기성품 사용자 만들기

Google은 특정 사용자가 다른 사용자를 만들도록 허용하고 있습니다 (사전 등록 등). 생성시 전자 메일 주소, 연령 등과 같은 해당 사용자에 대한 클레임으로 저장되기를 바라는 일부 메타 데이터를 전달하고자합니다.

클레임 작성 위치를 본 예제에서는 SignIn 메서드를 사용하여 데이터베이스에 클레임을 유지합니다. 분명히 이러한 계정을 로그인하는 것이 아니라 클레임을 저장하는 것이 좋습니다.

var user = new ApplicationUser { UserName = "[email protected]" }; 
var pwd = "password123" 
var result = await _identityService.CreateAsync(user, pwd); 

if (!result.Succeeded) 
    return null; 

var identity = await _identityService.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); 
identity.AddClaim(new Claim(ClaimTypes.Email, "[email protected]")); 
// PERSIST THIS CLAIM 

물론 나는 주장이 작동하는 방식에 대해 매우 혼란 스러울 수 있지만, 이것은 나에게 상당히 일반적인 시나리오처럼 보입니다. 도움이나 의견을 보내주십시오.

답변

1

처음 주장에 접근 할 때 매우 혼란 스럽습니다. 먼저 클레임 및 신원이 실제로 무엇인지에 대한 리소스가 필요합니다.

https://msdn.microsoft.com/en-us/library/ff359101.aspx 괜찮은 설명이 필요합니다.

Explain "claims-based authentication" to a 5-year-old 몇 년 전에 MSDN 링크와 잘 어울립니다.

증류 된 주장은 기본적으로 속성입니다. 사용자 이름은 클레임입니다. 이메일 주소는 클레임입니다. 사용자가 가진 각 역할은 클레임입니다. 결합하여 그들은 정체성을 구성합니다. 클레임은 응용 프로그램의 권한 부여 시스템에서 사용하기위한 것이지만 지속성/저장 방법은 완전히 임의적입니다.

여기 실제로하고 싶은 것은 다른 사용자 데이터와 마찬가지로 이메일 주소, 연령 등을 데이터베이스에 저장하는 것입니다. 당신이하는 일은 당신에게 달려 있습니다. 정보가 "클레임"이되는 유일한 시간은 로그인 한 사용자의 ID의 일부로 해당 정보를 사용할 수있게하려는 경우 (데이터베이스에서 전자 메일 주소와 같은 정보를 가져 와서 추가하려는 경우)입니다. (아마도 별도의 질문/토론 일 것입니다).

+0

우수 설명. 이 (그리고 제거 된 답변) 날 upvote을 가지고, 정답을 얻을 주도했다 :) – mortware