User.IsInRole()始终返回false

时间:2018-11-18 01:26:20

标签: sql-server entity-framework model-view-controller asp.net-identity

我已经向AspNetroles表中添加了一些角色,并将这些角色分配给了user,但是当我使用分配了角色的用户ID和密码登录时,条件总是为假。

我已经向AspNetroles表中添加了一些角色,并将这些角色分配给了user,但是当我使用分配了角色的用户ID和密码登录时,条件总是为假。

我调试了代码,但是user.Isinrole总是为假。

请问有人可以帮我吗?

Tables with data

<div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) 
            </div>
            <div class="navbar-collapse collapse">
                @User.Identity.AuthenticationType
                @{
                    if (Request.IsAuthenticated)
                    {
                        if (User.IsInRole("administrator"))
                        {
                            <ul class="nav navbar-nav">
                                <li>@Html.ActionLink("Home", "Index", "Admin")</li>
                                <li>@Html.ActionLink("Admin", "Admin", "Admin")</li>
                                <li>@Html.ActionLink("Doctor", "Doctor", "Admin")</li>
                                <li>@Html.ActionLink("Receptionist", "Receptionist", "Admin")</li>
                            </ul>
                        }
                        if (User.IsInRole("Admin"))
                        {
                            <ul class="nav navbar-nav">
                                <li>@Html.ActionLink("Home", "Index", "Admin")</li>
                                <li>@Html.ActionLink("Admin", "Admin", "Admin")</li>
                                <li>@Html.ActionLink("Doctor", "Doctor", "Admin")</li>
                                <li>@Html.ActionLink("Receptionist", "Receptionist", "Admin")</li>
                            </ul>
                        }
                        if (User.IsInRole("Doctor"))
                        {
                            <ul class="nav navbar-nav">
                                <li>@Html.ActionLink("Home", "Index", "Doctor")</li>
                                <li>@Html.ActionLink("Services", "Services", "Doctor")</li>
                                <li>@Html.ActionLink("Appointment", "Appointment", "Doctor")</li>
                                <li>@Html.ActionLink("Manage", "Manage", "Doctor")</li>
                            </ul>
                        }
                        if (User.IsInRole("Patient"))
                        {
                            <ul class="nav navbar-nav">
                                <li>@Html.ActionLink("Home", "Index", "Patient")</li>
                                <li>@Html.ActionLink("Schedule", "Schedule", "Patient")</li>
                                <li>@Html.ActionLink("Appointments", "Appointments", "Patient")</li>
                                <li>@Html.ActionLink("Payment", "Payment", "Patient")</li>
                            </ul>
                        }
                        if (User.IsInRole("Receptionist"))
                        {
                            <ul class="nav navbar-nav">
                                <li>@Html.ActionLink("Home", "Index", "Patient")</li>
                                <li>@Html.ActionLink("Appointments", "Schedule", "Patient")</li>
                            </ul>
                        }
                        if (User.IsInRole(""))
                        {
                            <ul class="nav navbar-nav">
                                <li>@Html.ActionLink("Home", "Index", "Home")</li>
                                <li>@Html.ActionLink("About", "About", "Home")</li>
                                <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                            </ul>
                        }
                    }
                    else
                    {
                        <ul class="nav navbar-nav">
                            <li>@Html.ActionLink("Home", "Index", "Home")</li>
                            <li>@Html.ActionLink("About", "About", "Home")</li>
                            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                        </ul>
                    }

                }
                @Html.Partial("_LoginPartial")
            </div>

  [HttpPost]
    [ValidateAntiForgeryToken]
    [AllowAnonymous]
    public ActionResult SignIn(SignInview Sv)
    {

        var Auser = _context.AspNetUsers.Where(m => m.UserName == Sv.Username).SingleOrDefault();
        if(Auser!=null)
        {
            FormsAuthentication.SetAuthCookie(Sv.Username, true);
            Session["User"] = Auser.UserName;
            Session["UserId"] = Auser.Id;
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError(string.Empty, "Username or password is wrong");
            return View(Sv);
        }

    }

0 个答案:

没有答案
相关问题