主页中的链接仅对某些用户可见

时间:2015-01-12 21:36:14

标签: c# asp.net

我想添加仅对某些用户可见的主菜单(母版页)的链接。我通过带有

的Web.Config文件为一个文件夹做了这个
<authorization>
  <allow users="User1" />
  <deny users="*" />
</authorization>

母版页中链接的等价物是什么? 我已经知道Anonymous和LoggedInTemplate,但它们不适合我,因为我希望链接仅对给定用户可见。

我有一个ASP.NET Web Forms网站,我正在使用C#。

仅供参考,我是初学者并设置角色,会员资格等因为我使用VS 2013并且没有{{3}内置的这就是为什么我决定手动指定用户的原因,因为用户不多(最多5个)

1 个答案:

答案 0 :(得分: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>
相关问题