我正在开发一个使用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();
}
}
答案 0 :(得分:0)
您可以使用此过滤器实现自定义授权过滤器并装饰所需的控制器。在自定义过滤器内部授权核心方法,检查数据库的Windows标识并相应地返回true / false。