ASP.NET MVC中Membership.GetUser()的奇怪行为
我有以下代码:ASP.NET MVC中Membership.GetUser()的奇怪行为,asp.net,asp.net-mvc-3,webforms,Asp.net,Asp.net Mvc 3,Webforms,我有以下代码: public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { //I added this just to check if it returns true. bool check = Membership.ValidateUser(model.UserName, model
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
//I added this just to check if it returns true.
bool check = Membership.ValidateUser(model.UserName, model.Password);
if (Membership.ValidateUser(model.UserName, model.Password))
{
//trying to get get the name here.
string name = Membership.GetUser().UserName;
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
string[] roles = Roles.GetRolesForUser(User.Identity.Name);
switch (roles[0])
{
case "Employee":
return RedirectToAction("Index", "Employee");
case "HR_Team":
return Redirect("");
case "Team_Lead":
return Redirect("");
case "Management":
return Redirect("");
}
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
代码运行得非常好,但我不知道为什么它停止正常响应。现在我无法获得用户名以及它的角色(这可能是因为我猜它没有获得用户名)。我完全不知道这是怎么发生的。谁来帮我解决这个问题。谢谢你的帮助。非常感谢。请确保在获取用户时指定了用户名,因为您尚未设置表单身份验证cookie(只有在重定向后,您才能使用此重载,而不带任何参数) 调用
Membership.GetUser().UserName有什么意义
当您在模型中已经有用户名时。用户名
同样的东西代表角色:
string[] roles = Roles.GetRolesForUser(model.UserName);
不要试图在登录方法中使用User.Identity.Name
,因为您还没有经过身份验证的用户
如果您想让用户使用:
var user = Membership.GetUser(model.UserName);
而不是:
var user = Membership.GetUser();
太棒了,你太棒了,达林·迪米特洛夫爵士。谢谢。此外,razor视图中的“@User.Identity.Name”即使在成功登录后也返回null。你能帮忙吗。再次感谢:)