在哪里拦截用户身份验证

时间:2012-05-10 12:27:47

标签: asp.net-mvc-3 windows-authentication

确定。在我的ASP.NET MVC应用程序中,我正在使用Windows Authentication。我想为用户组使用不同的主题(layouts)。所以我的问题是我在哪里/如何intercept user authentication为给定的组应用主题。

我应该在default route/action内处理它(并检查请求是否经过身份验证?)。

谢谢!

1 个答案:

答案 0 :(得分:1)

我们通过创建多个布局来使用类似的设置,每个布局都有一个布局。

例如,假设您有一个Accounting角色,因此您创建一个引用Accounting.css文件的布局页面以及该角色的任何特殊.js文件

在该布局的顶部使用此

@{
    Layout = null;
}

在你的_ViewStart.cshtml部分视图中输入如下内容:

@{
    if (User.IsInRole("Admin")) {
        Layout = "~/Views/Shared/_AdminLayout.cshtml";
    }
    else if(User.IsInRole("Accounting")) {
        Layout = "~/Views/Shared/_AccountingLayout.cshtml";
    }
    else if(User.IsInRole("HR")) {
        Layout = "~/Views/Shared/_HRLayout.cshtml";
    }
    else {
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
}

我将管理员角色放在首位,因为管理员通常也可以访问所有其他角色,也就是说,在我的情况下,管理员使用也属于所有其他角色。因此,设置在顶部将立即过滤掉任何非管理员用户并检查其特定角色,并且任何管理员都会快速获得管理员布局