Софтуерно Инженерство
Loading...
r3v3nan7 avatar r3v3nan7 364 Точки

ASP Net Role manager problem

Здравейте,

Имам проблем с Role manager-а. Искам да направя в страницата с постовете само администратор да може да вижда edit, delete менютата , а останалите потребители да могат да си виждат само details. За тази цел пробвах това във файл Views/Posts/index.cshtml

  @if (!Roles.IsUserInRole(User.Identity.Name, "Administrators"))
            {
                @Html.ActionLink("Edit", "Edit", new { id = item.Id }) 
            }


            @Html.ActionLink("Details", "Details", new {id = item.Id}) |

            @if (!Roles.IsUserInRole(User.Identity.Name, "Administrators"))
            {
                @Html.ActionLink("Delete", "Delete", new { id = item.Id })
            }

 

Резултатът от това е

The Role Manager feature has not been enabled. -> http://imgur.com/a/MJy9y

Прегледах си базата с данни и имам дефинирана някаква роля администратор

Търсих информация и в stack overflow и там имаше някакви кодове да се пишат в web.config. Пробвах повечето

като всеки път rebuild-вах, но тази грешка си остана и махнах промените за да не ми счупят допълнително по някакъв начин

проекта. И сега съм отново в изходна позиция. Кодът (!Roles.IsUserInRole(User.Identity.Name, "Administrators") взех от слайда..

 

Благодаря предварително за помоща и отделеното време :)

 

 


 

 

0
Fundamentals Module 23/07/2016 17:16:40
ralitsa_d avatar ralitsa_d 171 Точки
Best Answer

Здравей, а добави ли [Authorize] в контролера на постовете? Трябва да го добавиш за създаване, едитване и изтриване на постовете, като за едит и изтриване добавяш Roles = "Administrators".

1
r3v3nan7 avatar r3v3nan7 364 Точки

Сложил съм ги да, но друг е въпросът дали правилно съм ги поставил

Затова слагам кода тук http://pastebin.com/jWNFsbgU

Ако някой види грешка да каже, защото наистина не съм убеден , че съм ги сложил правилно.

0
23/07/2016 19:26:01
ralitsa_d avatar ralitsa_d 171 Точки

Мисля, че разбрах къде е проблемът! Трябва да провериш и дали има автор на поста - ако няма - тогава ти хвърля грешката.

Пробвай това:

@if (User.IsInRole("Administrators") || (item.Author != null && User.Identity.Name == item.Author.UserName))
            {
                @Html.ActionLink("Edit", "Edit", new { id = item.Id }) @:|
                @Html.ActionLink("Delete", "Delete", new { id = item.Id }) @:|
            }
            
            @Html.ActionLink("Details", "Details", new { id=item.Id })

 

1
r3v3nan7 avatar r3v3nan7 364 Точки

Позна. Това е. Сега тръгна. Много благодаря на всички за помоща... 

1