c# - ASP.NET 身份验证允许/阻止页面访问并同时显示/隐藏链接

标签 c# asp.net security authorization

我正在寻找一种方法来轻松地围绕某个位置设置安全性,同时使用它来显示/隐藏菜单上的链接。

我知道如何为未经授权的用户屏蔽位置,例如:

<location path="AdminDirectory">
    <system.web>
        <authorization>
            <allow roles="SomeRole"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

我可以用代码显示/隐藏链接,例如:

myLink.Visible = User.IsInRole("SomeRole");

但我正在寻找一种方法来执行此操作,以便只需配置一次“SomeRole”角色名称。如果我可以从 location 元素读取并在代码中对其进行测试,那将是理想的,但我没有找到这样做的方法。

// Something like:
myLink.Visible = TestLocationAccess("AdminDirectory");

我可以想到一种非常糟糕的方法,通过 javascript/AJAX 调用从客户端“测试”目录并使用 javascript 显示/隐藏链接,但显然这并不理想。

谢谢

最佳答案

您可以使用 CheckUrlAccessForPrincipal方法:

myLink.Visible = UrlAuthorizationModule
    .CheckUrlAccessForPrincipal("~/AdminDirectory", User, "GET");

由于该方法是静态的,您显然需要将当前 IPrincipal 的实例作为第二个参数传递。

关于c# - ASP.NET 身份验证允许/阻止页面访问并同时显示/隐藏链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954728/

相关文章:

c# - 在 SelectList 集合中设置选定项

java - 打开JDK最新Javax邮件未发送

c# - AWS Lambda 访问文件

c# - SQLite.Net UTC 日期时间

c# - 带试用期的 PayPal 定期付款

asp.net - 如何在 ASP.NET 中使用多个授权方案颁发相应的 Bearer 和 Cookie 标识?

c# - 以编程方式将应用程序添加到所有配置文件 Windows 防火墙 (Vista+)

C# - 如何将列表框中文本文件中的文本加载到 richTextBox 中?

java.security.NoSuchAlgorithmException : Ed25519 KeyPairGenerator not available

wordpress - 带有 headless (headless) WordPress 的 Next.js 获取帖子需要授权(JWT)吗?