«Авторизация» работает в одиночку, но не с ролями - PullRequest
1 голос
/ 20 апреля 2019

Приложение, которое я создаю, нуждается в нескольких ролях и изначально, кажется, работает нормально: я могу войти в систему с «User1» и после дебюта «IsRole_ModuleAll_Admin» возвращает true:

    IdentityUser MyUser = UserManager.Users.FirstOrDefault();
    IList<string> MyRoles = await UserManager.GetRolesAsync(MyUser);


    bool IsRole_ModuleAll_Admin = MyRoles.Contains("Module: All - Admin"); //True
    bool IsRole_ModuleStatus_TechnicianOSC = MyRoles.Contains("Module: Status - TechnicianOSC");
    bool IsRole_ModuleStatus_Admin = MyRoles.Contains("Module: Status - Admin");

    if (IsRole_ModuleAll_Admin || IsRole_ModuleStatus_TechnicianOSC)
    {
        <li>
            <a href="#StatusSubmenu" data-toggle="collapse" aria-expanded="false" aria-controls="PlannerSubmenu"><i class="fas fa-satellite-dish fa-fw"></i>&nbsp;&nbsp;Status</a>
            <ul class="collapse list-unstyled" id="StatusSubmenu">
                <li>
                    <a href=@Url.Action("Last_GGG", "Status")><i class="fas fa-industry fa-fw"></i>&nbsp;&nbsp;GGG</a>
                </li>
                <li>
                    <a href=@Url.Action("Last_ASU", "Status")><i class="fas fa-city fa-fw"></i>&nbsp;&nbsp;ASU</a>
                </li>
            </ul>
        </li>
    }

Теперь внутри Status /Last_GGG следующий код работает ... но когда я раскомментирую [Authorize (Roles ...)] и комментирую [Authorize], я получаю ошибку идентификации "Доступ запрещен - у вас нет доступа к этому ресурсу".Есть идеи, почему это происходит?

namespace Viewer.Controllers._03_ModuleStatus
{
    [Authorize]
    //[Authorize(Roles = "Module: All - Admin, Module: Status - TechnicianOSC, Module: Status - Admin")]
    public class StatusController : Controller
    {
        private readonly IGGGRepository _GGGRepository;
        public IEnumerable<GGG> ListOfAllGGG;

        public StatusController(IGGGRepository GGGRepository)
        {
            _GGGRepository = GGGRepository;
        }

        public IActionResult Last_GGG()
        {
            GGGPlannerViewModel GGGViewModel = new GGGPlannerViewModel();
            GGGViewModel.GGGList = _GGGRepository.GGGs;
            GGGViewModel.CurrentValues = _GGGRepository.CurrentValuesinDB;
            return View(GGGViewModel);
        }
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...