什么时候在MVC4中设置User.Identity.Name(When does User.Identity.Name get set in MVC4)

编程入门 行业动态 更新时间:2024-10-28 18:27:34
什么时候在MVC4中设置User.Identity.Name(When does User.Identity.Name get set in MVC4)

我试图从MVC4中的UserProfile中获取一个自定义属性,该属性使用SimpleMembershipProvider。 我的表格如下:

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; } }

当我尝试在登录时的会话变量中获取我感兴趣的userprofile项目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); }

我收到一个错误:Sequence没有包含我的var curuser行的元素。 如果我用model.Username替换User.Identity.Name,它可以正常工作。 我宁愿使用User.Identity.Name,因为我可以在任何需要的地方使用它,或者我认为。

I am trying to get a custom property out of the UserProfile in MVC4 which uses SimpleMembershipProvider. My table is as follows:

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; } }

When I try to get the userprofile item I am interested in, FirstName, in a session variable on login

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); }

I get an error: Sequence contains no elements referring to my var curuser line. If I replace User.Identity.Name with model.Username it works fine. I would rather use User.Identity.Name since I can use this wherever needed, or so I thought.

最满意答案

标题中的问题的答案就在于:

什么时候HttpContext.User.Identity设置?

希望这可以帮助

There lies the answer to your question in title:

When is HttpContext.User.Identity set?

Hope this helps

更多推荐

本文发布于:2023-07-20 11:10:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1198702.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:什么时候   User   Identity   set

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!