Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 5 如何在登录时检查TeamID,如果为空,则将登录重定向到另一个页面?_Asp.net Mvc 5_Identity - Fatal编程技术网

Asp.net mvc 5 如何在登录时检查TeamID,如果为空,则将登录重定向到另一个页面?

Asp.net mvc 5 如何在登录时检查TeamID,如果为空,则将登录重定向到另一个页面?,asp.net-mvc-5,identity,Asp.net Mvc 5,Identity,我正在使用identity 2.0,因此已设置登录和注册。我在AspNetUsers表中添加了一个TeamID。当登录以及检查电子邮件和密码时,我希望它检查TeamID。如果TeamID为null,我想将其重定向到“索引”、“团队”页面,以便用户选择一个团队。如果TeamID不为空,我希望它转到主页。这是登录的代码 // POST: /Account/Login [HttpPost] [AllowAnonymous] [ValidateAntiFo

我正在使用identity 2.0,因此已设置登录和注册。我在AspNetUsers表中添加了一个TeamID。当登录以及检查电子邮件和密码时,我希望它检查TeamID。如果TeamID为null,我想将其重定向到“索引”、“团队”页面,以便用户选择一个团队。如果TeamID不为空,我希望它转到主页。这是登录的代码

// POST: /Account/Login
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {

                return View(model);
            }

            //This doesn't count login failures towards account lockout
            //To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            switch (result)
            {
                case SignInStatus.Success:
                    return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return View(model);
            }

        }
//POST:/Account/Login
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
如果(!ModelState.IsValid)
{
返回视图(模型);
}
//这不会将登录失败计入帐户锁定
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=wait SignInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、shouldllockout:false);
开关(结果)
{
案例标志状态成功:
返回重定向到本地(returnUrl);
案例标志状态锁定输出:
返回视图(“锁定”);
案例标志状态。要求验证:
return RedirectToAction(“SendCode”,new{ReturnUrl=ReturnUrl,RememberMe=model.RememberMe});
案例信号状态故障:
违约:
AddModelError(“,”登录尝试无效“);
返回视图(模型);
}
}

在用户登录之前,您只需通过其电子邮件查找用户并检查团队ID即可:

var user = await UserManager.FindByEmailAsync(model.Email);
if (user != null && !user.TeamID.HasValue)
{
    return RedirectToAction("Index", "Teams");
}

//This doesn't count login failures towards account lockout
//To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
...

谢谢你的回答,这部分是有效的。它会检查id,如果没有id但用户没有登录,它会将我重定向到Teams页面。我希望用户即使没有TeamID也能登录,这样他们就可以选择一个。成功登录后,只需将代码移动到即可。