public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
{
return false;
}
string currentUser = httpContext.User.Identity.Name;
string currentController = httpContext.Request.RequestContext.RouteData.GetRequiredString("controller");
// TODO: go hit your database and see if currentUser can access
// currentController and return true/false from here
...
}
}
затем украсьте свои контроллеры или действия:
[MyAuthorize]
public class FooController: Controller
{
...
}
При этом я подозреваю, что вы, возможно, ошиблись в дизайне своей базы данных, сохранив список тех пользователей, которыедоступ к доступу, какое действие контроллера.Вероятно, вы должны были использовать роли для этого.Знание базы данных о контроллерах кажется неправильным.
Итак:
[Authorize(Roles = "Foo,Bar")]
public class FooController: Controller
{
...
}
Только пользователи с ролью Foo
или Bar
могут получить доступ к FooController
.