此项目正在使用 asp.net mvc 5 进行开发。此代码在其他项目中正常工作。其他项目也是用 asp.net mvc 5 开发的。
病人在这里:if (WebSecurity.UserExists(userName))
{
if (WebSecurity.Login(userName, password))//this returns true
{
if (!Roles.IsUserInRole(userName, SysRoles.Admin.ToString()))
{
LoginResultMessage msg = new LoginResultMessage();
WebSecurity.Logout();
model.isLoggedIn = false;
msg.MessageType = LoginResultTypes.error.ToString();
msg.Message = LangRes.RoleFail;
model.messages.Add(msg);
}
else//continuing from here because role is admin
{
string x = User.Identity.Name;//x is emptystring
model.isLoggedIn = true;
return RedirectToLocal(returnUrl);
}
}
else{...}
}
我得到'x'变量为空字符串,这意味着没有用户登录。但2milisecons前程序告诉我if (WebSecurity.Login(userName, password)) = true
。并重定向同一页面(用户未经过身份验证的页面=登录页面)。我不明白发生了什么。感谢您的帮助和抱歉英语大屠杀:)。