使用 MVC 进行 Windows 身份验证.具有不同“访问级别”的 Windows 身份验证

本文关键字:访问级别 身份验证 Windows MVC 进行 使用 | 更新日期: 2024-11-07 22:30:14

我是MVC和身份验证的新手。

我们正在开发一个将使用Windows身份验证的MVC应用程序。我们首先通过在HTML中使用剃刀来解决它,如下所示:

@if (HttpContext.Current.User.IsInRole("somerole") || HttpContext.Current.User.IsInRole("somerole") || HttpContext.Current.User.IsInRole("somerole"))

但从长远来看,这是行不通的,因为我们希望能够在数据库中添加/删除某个窗口身份验证应该能够看到/看不到某个视图。换句话说,我们需要它比上面的例子更灵活/动态。

假设我们的用户数据库看起来像这样:

USER
string windowsauth
int accesslevel

如果我们有一个具有 windowsauth "域用户"和访问级别 1 的用户,我希望该用户能够看到所有页面。

另一个具有 Windowsauth "其他用户"且访问级别为 2 的用户将只能看到某些页面。

我们不知道如何解决这个问题,我希望我的问题足够清楚。任何帮助都会很棒!

使用 MVC 进行 Windows 身份验证.具有不同“访问级别”的 Windows 身份验证

您可以创建一个基本模型,其中包含当前视图的授权角色列表。然后,您可以执行以下操作:

@if(Model.AuthRoles.Any(r=>HttpContext.Current.User.IsInRole(r))

因此,您的基本模型可能如下所示:

public class BaseModel{
    List<string> AuthRoles {get;set;}
    public BaseModel(List<string> authorisedRoles){
        AuthRoles = authorisedRoles;
    }
    public BaseModel(){
         AuthRoles = new List<string>();
    }
}

然后,在填充模型时,可以从数据库中加载授权角色。

此时还要对角色执行检查,并执行任何必要的重定向。

您可以使用类似的前提在站点中构建导航栏。

相关文章: