c# – 根据ASP.NET MVC 4 Internet应用程序登录中的用户角色重定向到不同的页面

我正在创建ASP.NET MVC 4 Internet应用程序.在该申请中
我创建了任何用户都可以登录登录页面,然后我尝试根据用户的角色将用户重定向到不同的页面.

ASP.NET Identity是这里的成员系统.

在我的AspNetRoles表中,我有两个角色:

Id| Name

1 | HEI_Admin

2 | HEI_User

这是我的登录控制器方法

[HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(Loginviewmodel model,string returnUrl)
    {
        if (ModelState.IsValid)
        {
            var user = await UserManager.FindAsync(model.UserName,model.Password); 

            if (user != null)
            {
                if (user.ConfirmedEmail == true)
                {

                    await SignInAsync(user,model.RememberMe);

                    if (String.IsNullOrEmpty(returnUrl))
                    {
                        if (UserManager.IsInRole(user.Id,"HEC_Admin"))
                        {
                            return RedirectToAction("Index","HEC");
                        }
                        //role Admin go to Admin page
                        if (UserManager.IsInRole(user.Id,"HEI_User"))
                        {
                            return RedirectToAction("Index","HEI");
                        }
                    }

                    else
                    {
                        return RedirectToLocal(returnUrl);
                    }


                }
                else
                {
                    ModelState.AddModelError("","Confirm Email Address.");
                }
            }
            else
            {
                ModelState.AddModelError("","Invalid username or password.");
            }
        }
        // If we got this far,something Failed,redisplay form
        return View(model);
    }

但是当我尝试使用正确的凭据进行记录时,我遇到以下错误

建立与sql Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及sql Server是否配置为允许远程连接.

所有连接都经过双重检查,如何才能实现这个问题.

解决方法

if (ModelState.IsValid)
        {
            var user = await UserManager.FindAsync(model.UserName,model.Password);
            if (user != null)
            {
                await SignInAsync(user,model.RememberMe);
                if (UserManager.IsInRole(user.Id,"Admin"))
                {
                    return RedirectToAction("Index","Admin");
                }
                else if (UserManager.IsInRole(user.Id,"Clerk"))
                {
                    return RedirectToAction("Index","Employee");
                }
                else if (UserManager.IsInRole(user.Id,"Customer"))
                {
                    return RedirectToAction("Index","Customer");
                }
                //return RedirectToLocal(returnUrl);
            }
            else
            {
                ModelState.AddModelError("","Invalid username or password");
            }
        }
        // If we got this far,redisplay form
        return View(model);
    }

这是我用于重定向代码.还要查看是否将userID和RoleID插入到ASPNETUserRoles表中

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...