질문 :양식 인증을 사용하여 현재 사용자 ID (이름 아님) 가져 오기?
양식 인증과 내 자신의 맞춤 멤버십 공급자를 가지고 놀고 있습니다.
System.Web.Security.FormsIdentity veryFunny= (System.Web.Security.FormsIdentity)
System.Web.HttpContext.Current.User.Identity;
을 그리고 나는이 일을 현재의 회원 사용자를 얻을 수 있습니다 : 내가 보는 것과
, 나는 수행하여 현재 FormsIdentity를 얻을 수
var UserFromDb = System.Web.Security.Membership.GetUser();
그리고 나서이 사용자 ID를 얻을 수 있습니다 이렇게하면 :
var MyUserId = UserFromDb.ProviderUserKey;
재미있는 것은 내가 Membership.GetUser()를 호출하면 멤버십 공급자에서이 메서드를 호출합니다.
public override MembershipUser GetUser(string username, bool userIsOnline)
데이터베이스에서 사용자 정보를 조회합니다. 내가 생각 그래서
는 .NET 프레임 워크는 내부적으로 사용자 이름에 따라 데이터베이스에서 사용자 정보를 얻을 수
GetUser(System.Web.HttpContext.Current.User.Identity.Name, whatever);
을 수행한다는 것이다. 전체 사용자를 검색하여 사용자 ID를 얻으려고 할 때 성능에 좋지 않기 때문에 처음에는 이런 일이 혼란 스럽습니다.
둘째로, 내가 기대하는 바가 아니기 때문에 두 번째로 사용자 ID를 조회해야한다는 것이 불안해합니다.
셋째, 사용자 이름이 프로그램 과정에서 변경 될 수 있고, 사용자가 로그 아웃하고 로그인해야 할 필요가 없으므로 방해가됩니다.
이제 나에게이 디자인은 헛소리처럼 들립니다.
그러나 Microsoft는 응용 프로그램 이름, 그룹 이름 및 사용자 이름을 기본 키로 사용하므로 많은 의미가 없습니다.
여기 내 질문 :
DB 조회없이 사용자 ID를 가져 오는 방법이 없습니까?
회원 자격 아이디어 전체가 설계 상 너무 파괴 되었습니까?
이렇게 깨진 경우 :
FormsIdentity에는 userdata라는 문자열 속성이 있습니다. 그렇다면 어떻게 ASP.NET을 사용하여 거기에 사용자 ID를 저장할 수 있습니까?
ASP.NET 멤버 자격 공급자에 오신 것을 환영합니다. 이러한 공급자의 고품질 디자인 사례를 찾는 것은 실망 스러울 수 있습니다. –