Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы
if (!Factory.CreateAccessor(Thread.CurrentPrincipal, _db)
.HasPermission(id, Permission.Write))
return NotFound();
Когда простое и достижимое выглядело бы лучше:
if (!_db.PrincipalHasWritePermission(id, Thread.CurrentPrincipal)
return NotFound();
А так еще лучше:
return _db.Batch(id,
(doc)=> {
if (!doc.CheckWritePermission(Thread.CurrentPrincipal))
return NotFound();
// ...
doc.DoMyBusinessMethodThatRequiresWritePermissions(...);
return Ok();
});
тут уже явно отделена логика репозитория от бизнес логики (бизнес логика перенесена в методы Entity, но можно ее разместить и в сервисах). «Зона ответственности класса DbContext состоит в обеспечении модели сущностей, и ничего больше. „
Классы Entity тем более должны содержать исключительно свойства, соответствующие полям в базе
document.Sign(key, encodingRealization);
и
var service = new Service(encodingRealization);
service.Sign(document, key);
Спасибо за статью! Когда почти дочитал очень хотелось написать в коменте: Почему не сделать возможность задания прав как для конкретных пользователей так и для ролей. Но Вы все же это в принципе учли в самом конце статьи ))
Авторизуем ресурсы в REST-сервисе