Я разрабатываю новую экспериментальную среду веб-приложений и решил уделить RESTful некоторое внимание. Я ознакомился с основами и чувствую, что у меня довольно хорошее понимание RESTful как концепции.
Я установил и запустил систему, строго используя URL-адреса, чтобы определить «существительные» в системе и извлечь «глаголы» из методов HTTP-запроса. Я использую javascript-вызовы ajax для предоставления доступа к методам DELETE и PUT, которые не могут предоставить формы HTML. (Я понимаю, что эти меры не обязательно должны быть RESTful, но они удовлетворяют требованию «Единого интерфейса»).
Проблема связана с отсутствием состояния и кэшируемостью при аутентификации. Стандартная модель для аутентификации пользователей на веб-сайтах включает в себя событие аутентификации «логин», после которого (в случае успеха) пользователь «находится внутри стены» с постоянным безопасным сеансом и может видеть и выполнять действия по последующим запросам, которые не прошедшие проверку подлинности пользователи не могут. Такое постоянство аутентификации нарушает RESTful-ность. Кэширование и отсутствие состояния кажутся нарушенными, потому что аутентифицированный пользователь, вероятно, увидит HTML, который отличается от того, который не аутентифицированный пользователь увидит для того же запроса (например, на боковой панели для зарегистрированного пользователя может быть форма входа в систему). наш пользователь).
Использование стратегий www-authenticate для аутентификации пользователя только по запросам, требующим аутентификации, представляется шагом в правильном направлении, поскольку в нем нет концепции постоянного безопасного сеанса. Однако все еще остается вопрос о том, как изобразить «зарегистрированный» внешний вид для конечного пользователя в соответствии с тем, что мы все привыкли ожидать от веб-сайтов.
Итак, как вы думаете, какой предпочтительный способ обрабатывать аутентификацию и разрешение веб-страницы строго RESTful-способом, при этом оставляя возможность входить в декорации в HTML?