문제

안녕하세요 저는 사용자 지정 MembershipProvider.

을 알고 싶어요 현재 사용자 이름 응용 프로그램을 사용하는 동안 시나리오 그러나려고 할 때에 액세스하 HttpContext.현재 있습니다.사용자.정체성입니다.그것의 이름을 항상 반환 문자열입니다.비어 있습니다.

if (Membership.ValidateUser(tbUsername.Text, tbPassword.Text))
{
    FormsAuthentication.SetAuthCookie(tbUsername.Text, true);
    bool x = User.Identity.IsAuthenticated; //true
    string y = User.Identity.Name; //""
    FormsAuthentication.RedirectFromLoginPage(tbUsername.Text, cbRememberMe.Checked);
}

나는 뭔가?

도움이 되었습니까?

해결책

FormsAuthentication.SetAuthCookie(tbUsername.Text, true);
bool x = User.Identity.IsAuthenticated; //true
string y = User.Identity.Name; //""

문제 있는 이 시점에서 당신은 설정하는 인증 쿠키으로는 iprincipal 에 생성한 내부에 형성 인증 모듈은 일어나지 않을 것이 있을 때까지 새로운 요청이-그래서 그 시점에서 HttpContext.사용자는 이상한 상태입니다.한 번으로 리디렉션 그때 일어나기 때문에,그것은 새로운 요구에서는 브라우저는 쿠키를 얻을 읽기 전에는 당신의 페이지에 도달하고 올바른 사용자 객체를 만듭니다.

쿠키는 단지에서 설정한 후 브라우저는 요청이 완료됩니다.

옆으로 RedirectFromLoginPage 만듭 양식 auth 쿠키는 어쨌든,당신은 당신이 필요하지 않을 수동으로 수행

다른 팁

시도 해주세요 System.Web.HttpContext.Current.Request.LogonUserIdentity.Name 대신에 User.Identity.Name. 그것은 나를 위해 일했다.

의 가치 HttpContext.Current.User.Identity.Name 전화로 설정됩니다 RedirectFromLoginPage. 현재 사용자 ID를 얻을 수 있습니다 HttpContext.Current.User.Identity.Name 일단 새 페이지로 리디렉션되면. 이 맥락에서 사용자 속성을 통해 사용자 이름에 액세스 해야하는 이유를 잘 모르겠습니다. tbusername.text에 포함 된 값 만 사용할 수 없습니까?

VS Community 2015 버전에서 웹 양식 응용 프로그램을 작성하면 web.config 노드에서 코드를 자동으로 추가하여 FormsAuthentication을 제거하려면 아래 섹션을 제거하십시오.

<modules>
  <remove name="FormsAuthentication"/>
</modules>

이미 제안한대로 FormsAuthentication.RedirectFromLoginPage() 메소드, 인증 쿠키를 자동으로 설정합니다.

그러나 내 경우에는 내가 정리 한 웹 애플리케이션을 중첩했습니다. <httpModules> 아동 응용 프로그램의 태그 (부모 응용 프로그램에서 httpmodules를 상속하지 않도록) web.config 파일. 원치 않는 부모 httpmodules를 제거하면 모든 것이 다시 작동했습니다.

물건을 복잡하게하기 전에이 태그를 확인하는 것이 좋습니다 :)

멤버십 제공 업체의 사용자 이름을 찾고 있다면 이와 같은 것을 시도하십시오 ...

var user = Membership.GetUser( HttpContext.Current.User.Identity.Name );

URL을 사용하거나 URL을 변경하는 경우 비어있는 널 값을 반환 할 수 있습니다. .html에서 .aspx로 URL 경로를 변경하거나 확장이 없을 수 있습니다. 이것은 내 사건의 문제입니다. 당신은 시도해보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top