C# 在登录中验证电子邮件-MVC

C# 在登录中验证电子邮件-MVC,c#,model-view-controller,C#,Model View Controller,我对MVC比较陌生。想知道如何在登录期间验证用户的电子邮件地址。例如,电子邮件地址以“gmail.com”结尾的用户必须指向不同的视图,而具有不同电子邮件的其他用户应指向不同的视图。我该怎么做呢?任何帮助都将不胜感激 以下是我的AccountController的代码: 使用System.Linq; 使用System.Threading.Tasks; 使用System.Web; 使用System.Web.Mvc; 使用Microsoft.AspNet.Identity; 使用Microsoft

我对MVC比较陌生。想知道如何在登录期间验证用户的电子邮件地址。例如,电子邮件地址以“gmail.com”结尾的用户必须指向不同的视图,而具有不同电子邮件的其他用户应指向不同的视图。我该怎么做呢?任何帮助都将不胜感激

以下是我的AccountController的代码:

使用System.Linq;
使用System.Threading.Tasks;
使用System.Web;
使用System.Web.Mvc;
使用Microsoft.AspNet.Identity;
使用Microsoft.AspNet.Identity.Owin;
使用Microsoft.Owin.Security;
使用_PosWorx.Models;
使用System.Web.Security;
命名空间_PosWorx.Controllers
{
[授权]
公共类AccountController:控制器
{
PosworxDBEntities db=新的PosworxDBEntities();
专用应用程序signInManager\u signInManager;
私有应用程序用户管理器\u用户管理器;
公共账户控制员()
{
}
公共帐户控制器(ApplicationUserManager用户管理器、ApplicationSignInManager signInManager)
{
UserManager=UserManager;
SignInManager=SignInManager;
}
公共应用程序SignInManager SignInManager
{
得到
{
返回_signInManager??HttpContext.GetOwinContext().Get”);
返回重定向到操作(“索引”、“主页”);
}
加法器(结果);
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
//
//获取:/Account/ConfirmEmail
[异名]
公共异步任务);
//返回重定向操作(“放弃密码确认”、“帐户”);
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
//
//获取:/Account/放弃密码确认
[异名]
公共操作结果ForgotPasswordConfirmation()
{
返回视图();
}
//
//获取:/Account/ResetPassword
[异名]
公共操作结果重置密码(字符串代码)
{
返回代码==null?视图(“错误”):视图();
}
//
//POST:/Account/ResetPassword
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务ResetPassword(ResetPasswordViewModel模型)
{
如果(!ModelState.IsValid)
{
返回视图(模型);
}
var user=await UserManager.FindByNameAsync(model.Email);
if(user==null)
{
//不要透露用户不存在
返回重定向操作(“重置密码确认”、“帐户”);
}
var result=await UserManager.ResetPasswordAsync(user.Id、model.Code、model.Password);
if(result.successed)
{
返回重定向操作(“重置密码确认”、“帐户”);
}
加法器(结果);
返回视图();
}
//
//获取:/Account/ResetPasswordConfirmation
[异名]
公共操作结果ResetPasswordConfirmation()
{
返回视图();
}
//
//POST:/Account/ExternalLogin
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共操作结果外部登录(字符串提供程序、字符串返回URL)
{
//请求重定向到外部登录提供程序
returnnewchallengeresult(提供者,Url.Action(“ExternalLoginCallback”,“Account”,new{ReturnUrl=ReturnUrl}));
}
//
//获取:/Account/SendCode
[异名]
公共异步任务SendCode(字符串returnUrl,bool rememberMe)
{
var userId=await-signmanager.GetVerifiedUserIdAsync();
if(userId==null)
{
返回视图(“错误”);
}
var userFactors=await UserManager.getvalidtwfactorprovidersasync(userId);
var factorOptions=userFactors.Select(purpose=>newselectListItem{Text=purpose,Value=purpose});
返回视图(新的SendCodeViewModel{Providers=factorOptions,ReturnUrl=ReturnUrl,RememberMe=RememberMe});
}
//
//POST:/Account/SendCode
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务SendCode(SendCodeViewModel模型)
{
如果(!ModelState.IsValid)
{
返回视图();
}
//生成令牌并发送它
如果(!await signanmanager.SendTwoFactorCodeAsync(model.SelectedProvider))
{
返回视图(“错误”);
}
return RedirectToAction(“VerifyCode”,新建{Provider=model.SelectedProvider,ReturnUrl=model.ReturnUrl,RememberMe=model.RememberMe});
}
//
//获取:/Account/ExternalLoginCallback
[异名]
公共异步任务ExternalLoginCallback(字符串返回URL)
{
var loginInfo=await AuthenticationManager.GetExternalLoginInfoAsync();
if(loginInfo==null)
{
返回重定向操作(“登录”);
}
//如果用户已经登录,请使用此外部登录提供程序登录该用户
var result=await SignInManager.ExternalSignInAsync(loginInfo,isPersistent:false);
开关(结果)
{
案例标志状态成功:
返回重定向到本地(returnUrl);
案例标志状态锁定输出:
返回视图(“锁定”);
案例标志状态。要求验证
// Login Success Authenticate
            [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:
                        {
 // check this section
                        var isGmail = Regex.IsMatch(model.Email, @"^*@g(oogle)?mail\.com$");

                            if (isGmail)
                            {
                                return View("GmailViewCshtml", model);
                            }
                            else
                            {
                                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);
                }
            }
 if (model.Email.toLower().contains("@gmail.com")) 
 {
     // do something 
 }
if (model.Email.toLower().LastIndexOf("@gmail.com") == (model.Email.Length - 11 /* the length of "@gmail.com" + 1 */ )
{
    // do something 
}
if (model.Email.ToLower().EndsWith("@gmail.com") && model.Email.Length > 10) 
{
    // do gmail stuff
}