C# ASP.NET身份验证,允许/阻止页面访问,同时显示/隐藏链接
我正在寻找一种方法,可以轻松地将安全性包装到某个位置,同时使用它来显示/隐藏菜单上的链接 我知道如何阻止未经授权用户的位置,例如:C# ASP.NET身份验证,允许/阻止页面访问,同时显示/隐藏链接,c#,asp.net,security,authorization,C#,Asp.net,Security,Authorization,我正在寻找一种方法,可以轻松地将安全性包装到某个位置,同时使用它来显示/隐藏菜单上的链接 我知道如何阻止未经授权用户的位置,例如: <location path="AdminDirectory"> <system.web> <authorization> <allow roles="SomeRole"/> <deny users="*"/> <
<location path="AdminDirectory">
<system.web>
<authorization>
<allow roles="SomeRole"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
但我要寻找的是一种方法,这样“SomeRole”角色名只需配置一次。如果我可以从位置
元素中读取数据并在代码中进行测试,那将是理想的,但我没有看到一种方法可以做到这一点
// Something like:
myLink.Visible = TestLocationAccess("AdminDirectory");
我可以想出一种非常糟糕的方法,使用javascript/AJAX调用从客户端“测试”目录,并使用javascript显示/隐藏链接,但显然这并不理想
谢谢考虑使用内置功能的It来显示或隐藏基于角色的链接
i、 e在站点地图的源xml中,可以定义链接应用的角色,即
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="default.aspx" title="Home">
<siteMapNode url="admin.aspx" title="Admin" roles="Admin" />
<siteMapNode url="user.aspx" title="User Page" roles="User" />
</siteMapNode>
</siteMap>
您可以使用角色来限制web.config中的访问,并使用相同的角色来限制站点地图中的导航
我猜你仍然控制着两个地方的授权。这是我(过去)会做的事。不知道这是否能让你达到你需要去的地方
无论如何,这里的解释比我能解释的更好您可以使用以下方法:
由于该方法是静态的,您显然需要将当前的
IPrincipal
实例作为第二个参数传递,这正是我所要寻找的。谢谢
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="default.aspx" title="Home">
<siteMapNode url="admin.aspx" title="Admin" roles="Admin" />
<siteMapNode url="user.aspx" title="User Page" roles="User" />
</siteMapNode>
</siteMap>
myLink.Visible = UrlAuthorizationModule
.CheckUrlAccessForPrincipal("~/AdminDirectory", User, "GET");