Loading...

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

r3v3nan7 avatar r3v3nan7 365 Точки

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 365 Точки

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

Затова слагам кода тук 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 365 Точки

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

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 365 Точки

Благодаря ти за помоща, но сега друга грешка се появи в същия файл - 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 365 Точки

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

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

0
Dargo avatar Dargo 44 Точки

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

0
r3v3nan7 avatar r3v3nan7 365 Точки

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

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

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.