인증 세부 정보가 SQL 데이터베이스에 저장되는 사용자가 내 웹 사이트에 로그인 할 수 있도록 MVC5 Identity 2.0을 사용하고 있습니다. Asp.net Identity는 많은 온라인 자습서에서 볼 수있는 것처럼 표준 방식으로 구현되었습니다.
IdentityModels의 ApplicationUser 클래스는 정수 OrganizationId와 같은 일부 사용자 정의 속성을 포함하도록 확장되었습니다. 아이디어는 데이터베이스 관계를 위해 많은 사용자를 공통 조직에 작성하고 지정할 수 있다는 것입니다.
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
//Extended Properties
public DateTime? BirthDate { get; set; }
public long? OrganizationId { get; set; }
//Key Mappings
[ForeignKey("OrganizationId")]
public virtual Organization Organization { get; set; }
}
컨트롤러 내에서 현재 로그인 한 사용자의 OrganizationId 속성을 어떻게 검색합니까? 사용자가 로그인하면 메소드를 통해 사용할 수 있습니까? 아니면 컨트롤러 메소드가 실행될 때마다 UserId를 기반으로 데이터베이스에서 OrganizationId를 항상 검색해야합니까?
웹에서 읽은 것을 보았습니다. 로그인 된 UserId 등을 얻으려면 다음을 사용해야합니다.
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
그러나 OrganizationId는 User.Identity에서 사용할 수있는 속성이 아닙니다. OrganizationId 속성을 포함하도록 User.Identity를 확장해야합니까? 그렇다면 어떻게해야합니까?
내가 종종 OrganizationId를 필요로하는 이유는 많은 테이블 쿼리가 OrganizationId에 의존하여 로그인 한 사용자와 연관된 조직과 관련된 데이터를 검색하기 때문입니다.