УСПОКОИТЕЛЬНАЯ авторизация

Я имел успех с log4cxx в http://logging.apache.org/log4cxx/index.html . Это - версия C++ популярного регистратора Log4j, легко настроить или через conf файл или в коде. Издержки, когда это отключено, минимальны (вызов метода, и целое число выдерживают сравнение).

шаблон для вывода к журналу определяется шаблоном преобразования, который может быть столь же простым как дата/время и сообщение. Это также обрабатывает ограничение размера файла, трансформацию, и т.д. Можно также настроить различные шаблоны для различных ошибок и источников.

25
задан sigod 16 June 2015 в 23:17
поделиться

2 ответа

Извините, у меня нет времени, чтобы ответить на этот вопрос должным образом, но приятно видеть несколько хорошо продуманных вопросов по SO. Вот несколько комментариев:

Не попадайтесь в ловушку отображения HTTP-глаголов на CRUD. Да, GET и DELETE сопоставление довольно чисто, но PUT может выполнять Create и Update (но только полную замену), а POST - это глагол с подстановочным знаком. POST действительно обрабатывает все, что не подходит для GET, PUT и УДАЛЯТЬ.

Использование атрибутов для представления статуса объекта - это только один из подходов к управлению состоянием. Полагаю, вы можете представить, что может сделать следующий запрос:

POST /LockedPosts?url=/Post/2010

Подресурс также является допустимым подходом к управлению текущим состоянием ресурса. Я бы не чувствовал себя обязанным обрабатывать атрибуты «состояния» ресурса и его атрибуты «данных» согласованным образом.

Попытка сопоставить ресурсы напрямую с таблицами серьезно ограничит вас. Не забывайте, что, следуя ограничениям REST, вы внезапно становитесь очень ограниченными в доступных вам глаголах. Вы должны уметь компенсировать это творческим подходом к ресурсам, которые вы используете. Ограничение одного ресурса равным одной таблице серьезно ограничит функциональность вашего конечного приложения.

Мы регулярно видим Rails, ASP. Пользователи .NET MVC и WCF Rest публикуют здесь в StackOverflow вопросы о том, как выполнять определенные действия в рамках ограничений REST. Проблема часто заключается не в ограничении REST, а в ограничениях фреймворка в поддержке приложений RESTful. Я думаю, что важно сначала найти RESTful-решение проблемы, а затем посмотреть, можно ли его сопоставить с выбранной вами структурой.

Что касается создания модели разрешений, которая существует более тонко, чем сам ресурс. Помните, что одним из ключевых ограничений REST является гипермедиа. Гипермедиа можно использовать не только для поиска связанных сущностей, но и для представления допустимых / разрешенных переходов между состояниями. Если вы возвращаете представление, которое содержит встроенные ссылки, условно основанные на разрешениях, вы можете контролировать, какие действия могут выполняться кем. т.е. Если у пользователя есть разрешения на разблокировку POST 342, вы можете вернуть следующую ссылку, встроенную в представление:

<Link href="/UnlockedPosts?url=/Post/342" method="POST"/>

Если у них нет этого разрешения, не возвращайте ссылку.

Я думаю, что одна из ваших трудностей здесь в том, что вы пытаетесь сразу разобраться в слишком большой проблеме. Я думаю, вам нужно рассматривать интерфейс RESTful, который вы пытаетесь предоставить клиенту, как отдельную проблему от того, как вы собираетесь управлять разрешениями и предикатами для управления авторизацией в своей модели домена.

Я понимаю, что не ответил прямо ни на один из ваших вопросов, но, надеюсь, я изложил некоторые точки зрения, которые могут в чем-то помочь.

тогда не возвращайте ссылку.

Я думаю, что одна из ваших трудностей здесь в том, что вы пытаетесь сразу разобраться в слишком большой проблеме. Я думаю, вам нужно рассматривать интерфейс RESTful, который вы пытаетесь предоставить клиенту, как отдельную проблему от того, как вы собираетесь управлять разрешениями и предикатами для управления авторизацией в своей модели домена.

Я понимаю, что не ответил прямо ни на один из ваших вопросов, но, надеюсь, я изложил некоторые точки зрения, которые могут в чем-то помочь.

тогда не возвращайте ссылку.

Я думаю, что одна из ваших трудностей здесь в том, что вы пытаетесь сразу разобраться в слишком большой проблеме. Я думаю, вам нужно рассматривать интерфейс RESTful, который вы пытаетесь предоставить клиенту, как отдельную проблему от того, как вы собираетесь управлять разрешениями и предикатами для управления авторизацией в своей модели домена.

Я понимаю, что не ответил прямо ни на один из ваших вопросов, но, надеюсь, я изложил некоторые точки зрения, которые могут в чем-то помочь.

Я думаю, вам нужно рассматривать интерфейс RESTful, который вы пытаетесь предоставить клиенту, как отдельную проблему от того, как вы собираетесь управлять разрешениями и предикатами для управления авторизацией в своей модели домена.

Я понимаю, что не ответил прямо ни на один из ваших вопросов, но, надеюсь, я изложил некоторые точки зрения, которые могут в чем-то помочь.

Я думаю, вам нужно рассматривать интерфейс RESTful, который вы пытаетесь предоставить клиенту, как отдельную проблему от того, как вы собираетесь управлять разрешениями и предикатами для управления авторизацией в своей модели домена.

Я понимаю, что не ответил прямо ни на один из ваших вопросов, но, надеюсь, я изложил некоторые точки зрения, которые могут в чем-то помочь.

8
ответ дан 28 November 2019 в 22:00
поделиться

Как заметил Даррел, REST - это не CRUD. Если вы обнаружите, что идентифицированные вами ресурсы являются слишком крупнозернистыми, что единый интерфейс не обеспечивает достаточного контроля, тогда разделите ваш ресурс на подресурсы и используйте исходный ресурс как «коллекцию» гиперссылок на его компоненты.

0
ответ дан 28 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: