Windows身份验证用户授权

时间:2016-08-15 14:31:19

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

我正在开发一个使用ASP.NET MVC应用程序的项目,该应用程序的页面上只有某些用户才能访问。使用Windows身份验证,我想获取User.Identity.Name并检查数据库中的Users表中的LogonID字段。如果匹配,我想检查IsAdmin字段是否等于true,如果是,则授予访问所需页面的权限。

我对此很新,所以我想知道我该怎么做呢?

更新

所以我试图使用已向我建议的AuthorizeAttribute,但我遇到了一个问题。

我使用的是没有DBContext的SQL Server Compact数据库。所以我想知道如何编写我的实体以访问数据库?

public class AuthorizeAuthorAttribute : AuthorizeAttribute
{
    //Entity to access Database
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);
        if (!isAuthorized)
        {
            return false;
        }
        string currentUser = httpContext.User.Identity.Name; 

        var userName = //Linq statement 

        string my = userName.ToString();

        if (currentUser.Contains(my))                       
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        filterContext.Result = new HttpUnauthorizedResult();
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用此过滤器实现自定义授权过滤器并装饰所需的控制器。在自定义过滤器内部授权核心方法,检查数据库的Windows标识并相应地返回true / false。

https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.authorizecore(v=vs.118).aspx