微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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表中

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐