1

我在 ASP .NET MVC3 Web 应用程序中使用 Active Directory 身份验证。

我想控制在视图中呈现哪些组件。我正在考虑的选项是从控制器传递登录用户所属的组,然后使用帮助器对象检查用户是否是所需组的一部分。这是实现这一目标的最佳方法吗?如果是,那么我将如何实现控制器部分?

谢谢。

4

2 回答 2

1

如果您使用链接到页面的正确模型(视图模型,而不是您域中的类),这可以实现,如果您遵循这种方法,则视图模型应该包含视图所需的所有信息,仅此而已,由于您的视图需要根据当前用户角色知道哪些控件应该可见,因此我将为视图模型中的每个控件创建一个属性,如下所示:

public class MyViewModel
{
   public bool ShowMycontrol1 { get; set; }
}

在您的控制器中使用当前用户角色填充此“标志”,最后在视图中检查这些属性以显示或隐藏所需的控件

这只是实现这一目标的一种方法,我相信还有更多

于 2012-06-20T09:15:15.360 回答
0

您可以编写扩展方法。假设您要检查用户是否为管理员。因此,您可以使用这样的扩展方法来做到这一点;

public static class AuthHelper
{
    public static bool IsUserAdmin(this HtmlHelper helper)
    {
        return helper.ViewContext.HttpContext.User.IsInRole("Administrator");
    }
}

我希望这有帮助。

于 2012-06-20T09:20:38.293 回答