2014-10-14 3 views
4

저는 지금 ASP.NET Identity 2.1.0을 이해하려고 애를 썼으며, 쿠키와 클레임 작동 방식을 더 잘 이해하기 위해 기본으로 되돌아 가야합니다.ASP.NET ID : 왜 사용자 속성 및 클레임입니까?

사용자가 속성이 필요한 이유를 이해할 수 없다는 기본적인 질문이 있습니다. 은 물론도 주장합니다. 소유권 주장은 단지 키 + 값 + 권한을 요구하지 않으므로 속성을 저장하는 데 사용할 수있었습니다. (키 + 값)? * 두 개의 속성 집합 (속성에 Typed get/sets 제외)을 유지하면 어떤 이점이 있습니까? 하나는 다른 것보다 과도기를 의도합니까? * 쿠키에서 직렬화되고 라운드되는 항목을 구별하는 것만 있습니까 (단, 소유권 주장 만 해당)? * 그것에 대해 말하면 ... 그냥 확인 : 그것은 쿠키에 일련 번호가 매겨져 라운드가 걸린 클레임이거나 ClaimTypes.Roles와 같은 서브 세트 일뿐입니다.

도움 주셔서 감사합니다.

답변

4

사용자의 모든 클레임이 쿠키로 직렬화됩니다. 모든 ApplicationUser 속성이 클레임으로 직렬화되지는 않습니다. 사실, 대부분의 속성은 (특별히 코딩되지 않는 한) 클레임으로 직렬화되지 않습니다.

2 가지 개념을 혼동합니다. 클레임은 사용자가 인증 된 경우 모든 HTTP 요청에서 사용할 수있는 ClaimsPrincipal : IPrincipal의 일부입니다. ClaimsPrincipal은 사용자가 로그인하여 쿠키로 직렬화 할 때 ApplicationUser에서 생성됩니다.

ApplicationUser 모델은 사용자 정보를 데이터베이스에 유지하는 방법이며 추가 속성은 DB의 사용자 테이블에 대한 추가 필드 일뿐입니다. 클레임 추가를 통해 이러한 속성을 쿠키에서 사용할 수 있도록 코드 할 수 있지만 자동으로 클레임이되지는 않습니다.

추가 정보를 추가하려면 ApplicationUser 테이블에 소유권 주장 또는 추가 속성을 추가해야합니다. 데이터를 추가하는 방법을 제어 할 수 있습니다. 그러나 이들이 다른 목적을 달성 할 수 있음을 명심하십시오. ApplicationUser에 속성을 추가하면 모든 사용자가 그 속성을 가져야한다고 말합니다. 동일한 데이터를 사용하여 소유권 주장을 추가하면이 사용자에게는 다른 사용자가 가질 수없는 데이터가 있음을 알리는 것입니다.

마지막 질문에 대한 답변 : 모든 클레임이 일련 번호가 붙여지고 쿠키에 왕복됩니다. 너무 많은 정보를 쿠키에 넣지 마십시오. 쿠키가 너무 많아 져서 너무 많은 데이터를 돌릴 수 있습니다.

+0

모든 소유권 주장이 왕복하다 ... 크기에 영향을 미쳤음을 알려 주셔서 감사합니다. 클레임이 사용자에게 고유 할 수 있다는 뉘앙스를 설명해 주셔서 감사합니다. 예를 들어 사용 된 SSO와 관련된 사실, ApplicationUser의 스키마는 모든 사용자에게 동일합니다. 또한 내가 이제 소유권 주장 (따라서 역할) 및 * more * (예 : ShoeSize/Gender/etc.)를 즉시 사용할 수 있다는 것을 이해했다고 생각합니다. UserManager를 통해 Db에서 사용자를 생선 처리해야합니다. 2 초 후에 쿠키로 소품을 왕복하는 것이 어떤 이점이 있습니까? 어쨌든 사용자를 위해 데이터베이스에 충돌합니다 (일부 db Join for something)? – stacker

+0

내가 궁금한 점은 : db를 치는 것이 메모리보다 느리다는 것을 알지만 - 쿠키를 포함하지 않고 모든 이미지, css, html, js에 대해 모든 GET으로 되돌려 보내야합니다. 공연? 또는 MS가 연구를 수행 한 신뢰의 문제 일 뿐이며 다소 긴 (암호화 된) 쿠키 값을 가진 15 개 이상의 인터넷 요청 (MVC 페이지 용)이 아직 사용자 개체보다 빠르다는 것을 알 수 있습니다 인트라넷 연결을 통해 고마워. 그러나 나는 진짜로 또 다른 질문이되어야한다고 생각합니다 .-) – stacker

+0

첫 번째 질문에 대답하십시오 : 귀하가 주장/쿠키에 넣은 데이터는 DB를 치지 않고도 쉽게 사용할 수 있습니다.사용 빈도가 높은 시스템을 사용하면 모든 요청에 ​​대해 많은 db-call을 절약 할 수 있습니다. 그래서 당신이 당신의 쿠키에 넣고 싶은 것을 현명하게 선택하십시오. 우리 애플리케이션에서는 사용자 데이터를 쿠키에 넣는 것만으로 모든 요청에 ​​대해 DB에 3 개의 추가 호출을 저장했습니다. – trailmax