Asp.net mvc 3 在何处拦截用户身份验证

Asp.net mvc 3 在何处拦截用户身份验证,asp.net-mvc-3,windows-authentication,Asp.net Mvc 3,Windows Authentication,嗯。在我的ASP.NET MVC应用程序中,我使用的是Windows身份验证。我想为用户组使用不同的主题(布局)。因此,我的问题是,我在哪里/如何拦截用户身份验证,以便为给定的组应用主题 我是否应该在默认路由/操作中处理它(并检查请求是否经过身份验证?) 谢谢 我们通过创建多个布局使用类似的设置,每个角色一个布局 例如,假设您有一个会计角色,那么您创建了一个布局页面,该页面引用了Accounting.css文件以及该角色的任何特殊.js文件 在该布局的顶部使用 @{ Layout = n

嗯。在我的ASP.NET MVC应用程序中,我使用的是
Windows身份验证
。我想为用户组使用不同的主题(
布局
)。因此,我的问题是,我在哪里/如何拦截用户身份验证,以便为给定的组应用主题

我是否应该在默认路由/操作中处理它(并检查请求是否经过身份验证?)


谢谢

我们通过创建多个布局使用类似的设置,每个角色一个布局

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

在该布局的顶部使用

@{
    Layout = null;
}
在您的
\u 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";
    }
}

我把admin角色放在最上面,因为管理员通常也可以访问所有其他角色,也就是说,在我的例子中,管理员使用也属于所有其他角色。因此,在顶部设置该选项将立即过滤掉任何非管理员的用户,并查看他们的特定角色,任何管理员都将快速获得管理员布局

我们通过创建多个布局使用类似设置,每个角色一个布局

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

在该布局的顶部使用

@{
    Layout = null;
}
在您的
\u 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";
    }
}
我把admin角色放在最上面,因为管理员通常也可以访问所有其他角色,也就是说,在我的例子中,管理员使用也属于所有其他角色。因此,在顶部设置该选项将立即过滤掉任何不是管理员的用户,并查看他们的特定角色,任何管理员都可以快速获得管理员布局