【问题标题】:How do you completely hide an element from a user based on their ASP.NET Identity Role?如何根据用户的 ASP.NET 身份角色对用户完全隐藏元素?
【发布时间】:2021-09-14 20:00:27
【问题描述】:

目标:根据用户在 ASP.NET Identity 中的角色隐藏某些元素,例如页面链接。

我尝试过的:[Authorize(Roles = IdentityHelper.Administrator)]

(如果您将注释放在某些元素上,这确实会限制对某些元素的访问,例如页面,但它不会隐藏元素本身。我希望它两者都做。)我隐藏这些元素并不完全重要用户,因为他们已经受到限制,但这会使我的网站在用户看来更好。

(IdentityHelper 只是一个帮助类,用于设置有关管理员角色的所有详细信息)

代码示例:

//Restricts access, which is good, but does not completely hide elements from user.
[Authorize(Roles = IdentityHelper.Administrator)] 
public  async Task <IActionResult> Edit(int id)
{
    //get pixel art with corrosponding id
    PixelArt p =  await PixelDBManager.GetSinglePixelAsync(id, _context);

    //pass pixel art to view
    return View(p);
}

我应该切换到基于声明或策略的身份而不是角色,还是我可以坚持使用角色来解决这个特定问题?

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-core model-view-controller asp.net-identity


    【解决方案1】:

    您可以在 Razor 模板中使用 User.IsInRole()

    @if(User.IsInRole(IdentityHelper.Administrator))
    {
        <h1>I'm an administrator</h1>
    }
    

    【讨论】:

    • 用匿名用户和非管理员登录用户测试了这个解决方案,完美运行,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-08-09
    • 2017-09-01
    • 2021-08-31
    • 2019-05-17
    • 2021-12-01
    • 2018-07-19
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多