加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:11:15 所属栏目:百科 来源:网络整理
导读:我正在创建ASP.NET MVC 4 Internet应用程序.在该申请中 我创建了任何用户都可以登录的登录页面,然后我尝试根据用户的角色将用户重定向到不同的页面. ASP.NET Identity是这里的成员系统. 在我的AspNetRoles表中,我有两个角色: Id| Name1 | HEI_Admin2 | HEI_
我正在创建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表中

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读