Софтуерно Инженерство
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
Technology Fundamentals 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
Nikola_Andreev avatar Nikola_Andreev 671 Точки

И аз пробвах с кода от слайда първо но не сработи и го направих ето така:

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

Това ще ти направи и потребителя да може да си променя и трие неговите постове, но чуждите не.

0
r3v3nan7 avatar r3v3nan7 364 Точки

Благодаря ти за помоща, но сега друга грешка се появи в същия файл - Object reference not set to an instance of an object.

Някъде отгоре във файла инклудваш ли нещо ?

0
Nikola_Andreev avatar Nikola_Andreev 671 Точки

Ами само тези 2 те , ама то ако е от това то няма да ти билдва въобще.

@using MVCBlog.Clases;
@using MVCBlog.Models;

 

0
r3v3nan7 avatar r3v3nan7 364 Точки

Прав си, но не мога да го разбера каква инстанция на обект ми иска. Ребилднах целия проект стартирах го , преди това изчистих и кеша на браузъра и пак се

чупи с тази грешка и не мога да разбера къде греша.

0
Dargo avatar Dargo 44 Точки

Във файла web.config трябва да добавиш в тага <system.web><roleManager enabled = "true"/> ...</system.web> . Това би трябвало да реши проблема.

0
r3v3nan7 avatar r3v3nan7 364 Точки

Благодаря ти , но и това не става. Сега хвърля Configuration error и дава точно реда с командата, Аз и в stock overflow видях подобни неща, но нищо

не ми тръгна... вече 3-4 ти час....

0