gpt4 book ai didi

asp.net-mvc-5 - 在 View 中使用 User.IsInRole()

转载 作者:行者123 更新时间:2023-12-02 09:40:11 27 4
gpt4 key购买 nike

在我的 mvc5 项目中,为了禁用未经授权的用户的操作链接,我这样做了

@if (User.IsInRole("Admin") | User.IsInRole("Manager"))
{
@Html.ActionLink("Add New Record", "ProductTypeIndex", "ProductType")
}

但是如果有很多角色需要检查,那么这个 @if() 就会很长。如何避免这种情况?我是否需要自定义助手(如果是这样我该如何处理它)?帮助表示赞赏..

最佳答案

您可以编写自己的扩展方法并在代码中使用它。

public static class PrincipalExtensions
{
public static bool IsInAllRoles(this IPrincipal principal, params string[] roles)
{
return roles.All(r => principal.IsInRole(r));
}

public static bool IsInAnyRoles(this IPrincipal principal, params string[] roles)
{
return roles.Any(r => principal.IsInRole(r));
}
}

现在您可以像这样调用此扩展方法:

// user must be assign to all of the roles  
if(User.IsInAllRoles("Admin","Manager","YetOtherRole"))
{
// do something
}

// one of the roles sufficient
if(User.IsInAnyRoles("Admin","Manager","YetOtherRole"))
{
// do something
}

虽然您也可以在 View 中使用这些扩展方法,但请尽量避免在 View 中编写应用程序逻辑,因为 View 不易进行单元测试。

关于asp.net-mvc-5 - 在 View 中使用 User.IsInRole(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369229/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com