websecurity.login返回true但实际上没有登录

时间:2014-08-23 14:43:33

标签: c# asp.net asp.net-mvc

此项目正在使用 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。并重定向同一页面(用户未经过身份验证的页面=登录页面)。我不明白发生了什么。感谢您的帮助和抱歉英语大屠杀:)。

0 个答案:

没有答案