Я пытаюсь использовать новый MVC4 DbDataController для предоставления API успокоительных данных.
Моя проблема заключается в том, чтобы защитить это.Я создал пользовательские атрибуты авторизации, которые являются производными от атрибута Authorize
public class AdminOnlyAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!IsAllowed()) {
filterContext.Result = new HttpUnauthorizedResult("Not logged in");
}
...
}
, и это прекрасно работает применительно к моим обычным действиям контроллера.Я пытаюсь использовать то же самое в моей службе данных, как это:
[AdminOnlyAttribute]
public class DataServiceController : DbDataController<AppBuilderDataContext>
{
[AdminOnlyAttribute]
public IQueryable<Thing> GetThings()
{
return DbContext.AllMyThings();
}
}
Вы можете видеть, что я пробовал свой атрибут как на контроллере, так и на действии, но он не срабатывает ни для одного из них.Я установил точку останова внутри своей функции атрибута authorize, и она не вызывается.
Я почти уверен, что Скотт Гатри сказал, что это сработает.Я делаю это неправильно или мне нужен совершенно другой метод для их защиты?