确定。在我的ASP.NET MVC应用程序中,我正在使用Windows Authentication
。我想为用户组使用不同的主题(layouts
)。所以我的问题是我在哪里/如何intercept user authentication
为给定的组应用主题。
我应该在default route/action
内处理它(并检查请求是否经过身份验证?)。
谢谢!
答案 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";
}
}
我将管理员角色放在首位,因为管理员通常也可以访问所有其他角色,也就是说,在我的情况下,管理员使用也属于所有其他角色。因此,设置在顶部将立即过滤掉任何非管理员用户并检查其特定角色,并且任何管理员都会快速获得管理员布局