2015-01-12 3 views
0

Я хочу добавить ссылки на главное меню (главная страница), которые видны только для определенных пользователей. Я сделал это для папки через файл web.config сСсылка на главную страницу доступна только определенным пользователям

<authorization> 
    <allow users="User1" /> 
    <deny users="*" /> 
</authorization> 

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

У меня есть веб-сайт ASP.NET Web Forms, и я использую C#.

FYI, я новичок и создаю роли, членство, и это будет проблемой для меня с тех пор, как я использую VS 2013, и у него нет встроенного Website Administration Tool. Именно поэтому я решил вручную указать пользователей, поскольку существует обыкновение быть много пользователей (5 на макс)

+0

Web Configuration Tool? Вы имеете в виду страницу поставщика ASP.NET или что-то еще? .. –

+0

Я имею в виду http://msdn.microsoft.com/en-us/library/yy40ytx0%28v=vs.140%29.aspx – WhatWhatWhat

+0

Возможно, вы следует прочитать эту статью: [Thinktecture.IdentityManager в качестве замены для инструмента администрирования веб-сайта ASP.NET] (http://www.hanselman.com/blog/ThinktectureIdentityManagerAsAReplacementForTheASPNETWebSiteAdministrationTool.aspx). – mason

ответ

0

Форма

<asp:Panel runat="server" id="SpecialAdminOnlyPanel"> 
My links are <a href="#">here.</a> 
</asp:Panel> 

код за

List<string> AllowedUsers = new List<string>(){"Larry","Moe","Curly"}; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     if(!AllowedUsers.Contains(User.Identity.Name)) 
     { 
      SpecialAdminOnlyPanel.Visible=false; 
     } 
    } 
} 

Положите ваши ссылки на панели, затем скрыть/показать их с помощью свойства .Visible. Содержимое панели вообще не будет отправлено клиенту. Я лично считаю, что это неэлегантное решение.

Возможно, вы можете создать новый настраиваемый серверный элемент управления, похожий на LoginView, но принять его список имен пользователей, разделенных запятыми. Но прошло некоторое время с тех пор, как я создал новый элемент управления (теперь мой взгляд на MVC), поэтому нам придется оставить это кому-то другому. Использование такого гипотетического инструмента может выглядеть следующим образом: с хорошим декларативным синтаксисом:

<myn:SelectiveContentShower> 
    <myn:UserGroup users="Larry,Moe,Curly"> 
     My links are <a href="#">here.</a> 
    </myn:UserGroup> 
<myn:SelectiveContentShower> 
+0

Естественно, вопрос следовать вашему фрагменту - это .. что такое 'Пользователь' в этом' контексте'. –

+0

HttpContext.User; как он заселен? –

+0

@ BrettCaswell Нет, я бы не подумал, что кто-то спросит об этом. На каждой странице есть свойство [Пользователь] (http://msdn.microsoft.com/en-us/library/system.web.ui.page.user (v = vs.110) .aspx). – mason

Смежные вопросы