Вопрос

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

По сути, я хочу, чтобы мои разрешения были определены, чтобы я мог запросить весь набор разрешений за один раз и соответствующим образом настроить пользовательский интерфейс (изменения пользовательского интерфейса могут быть такими же низкими, как отключение определенных пунктов контекстного меню).Конечно, мне все еще нужно обеспечить соблюдение прав доступа на стороне сервера.

Итак, мне было интересно, есть ли у кого-нибудь какие-либо предложения относительно наилучшего способа

  1. поддерживайте разрешения и используйте их в серверном коде
  2. иметь легкий доступ к разрешениям в javascript
  3. не нужно делать запрос туда и обратно на сервер для каждого отдельного разрешения

Мысли?

Это было полезно?

Решение

Если у вас есть четкий набор разрешений, например "уровень пользователя" или "тип пользователя", вы могли бы просто передать значение в скрытое поле и получить доступ к значению через DOM.Вы все еще могли бы это сделать, если бы ваши разрешения были более детализированными, но у вас либо было бы много скрытых полей, либо вам пришлось бы кодировать информацию в XML, JSON или какой-либо другой формат.

Вы могли бы установить их как битовые флаги, чтобы вы могли использовать одно числовое значение с маской, чтобы узнать, есть ли у пользователя разрешение на определенное действие.Это было бы очень гибко, и до тех пор, пока у вас не будет более 32 или около того конкретных "прав", это позволило бы любую перестановку этих прав в очень маленьком пакете (в основном, unsigned int).

Например:

0x00000001 //edit permission
0x00000002 //create new thing permission
0x00000004 //delete things permission
0x00000008 //view hidden things permission
   .
   .
   .
0x80000000 //total control of the server and everyone logged in

Затем пользователь с разрешением 0x000007 мог редактировать, создавать и удалять, но ничего больше.

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

Другие советы

Если вы передаете структуру разрешений клиенту в виде объекта JSON (или XML, если предпочитаете), вы можете манипулировать этим объектом с помощью клиентского кода и отправлять его обратно на сервер, который может делать все необходимое для проверки данных и их сохранения.

Я не обязательно рассматриваю это как наиболее "правильное" решение, но было бы возможно сохранить все данные о разрешениях на стороне сервера и просто обслуживать обновленный пользовательский интерфейс, а не какую-то систему разрешений JSON?

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

Закодируйте их как JSON.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top