2012-09-26 3 views
2

SimpleMembershipProvider를 사용하는 MVC4의 UserProfile에서 사용자 지정 속성을 가져 오려고합니다.User.Identity.Name은 MVC4에서 언제 설정됩니까

public class UserProfile 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 
     public string UserName { get; set; } 

     //Added to round out requirements for site user profile 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Site { get; set; } 
    } 

을 내가 FIRSTNAME에 관심 오전 사용자 프로필 항목을받을 때, 세션 변수에 로그인

public ActionResult Login(LoginModel model, string returnUrl) 
     { 
      if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) 
      { 
       var context = new UsersContext(); 
       var curuser = context.UserProfiles.First(p => p.UserName == User.Identity.Name); 
       Session["FName"] = curuser.FirstName; 

       return RedirectToLocal(returnUrl); 
      } 

      // If we got this far, something failed, redisplay form 
      ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      return View(model); 
     } 

에 나는 오류가 발생 : 시퀀스에 요소가없는 다음과 같이 내 테이블입니다 내 var curuser 라인을 참조하십시오. User.Identity.Name을 model.Username으로 대체하면 제대로 작동합니다. User.Identity.Name을 사용하고 싶습니다. 필요할 때마다 사용할 수 있기 때문에 생각했습니다.

답변

5

제목에 질문에 대한 답을이있다 :

When is HttpContext.User.Identity set?

희망이 링크에 대한

+0

감사를하는 데 도움이됩니다. 그래서 분명히 이것을 이해하고 있다면 다음 페이지를 요청할 때까지는 사용할 수 없습니다. 나는 일하는 것을 계속 사용해야 할 것입니다. – Xaxum

관련 문제