User.IsInRole () всегда возвращает false - PullRequest
0 голосов
/ 18 ноября 2018

Я добавил некоторые роли в таблицы AspNetroles и назначил эти роли пользователю, но когда я вхожу в систему с идентификатором пользователя и паролем, которому назначены роли, условие всегда становится ложным.

Я добавил некоторые ролидля таблиц AspNetroles, и я назначил эти роли пользователю, но когда я вхожу в систему с идентификатором пользователя и паролем, которому назначены роли, условие всегда становится ложным.

Я отлаживал свой код, но user.Isinrole всегда получает ложь.

Может кто-нибудь помочь мне?

Таблицы с данными

<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);
        }

    }
...