Распространить разрешения на Javascript - PullRequest
7 голосов
/ 28 октября 2008

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

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

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

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

Мысли

Ответы [ 4 ]

2 голосов
/ 29 октября 2008

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

Вы можете установить их как битовые флаги, чтобы вы могли ИЛИ одно числовое значение с маской, чтобы увидеть, было ли у пользователя разрешение на конкретное действие. Это было бы очень гибко и до тех пор, пока у вас нет более 32 или около того определенных «прав», это позволило бы любую перестановку этих прав в очень маленьком пакете (в основном без знака 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 хорош, но вы не хотите запрашивать у сервера каждое конкретное разрешение на всей вашей странице. Вы должны сделать это один раз при загрузке страницы, настроить представление своей страницы и сохранить значение в глобальной переменной, а затем обратиться к локальным разрешениям для функций событий.

2 голосов
/ 28 октября 2008

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

1 голос
/ 29 октября 2008

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

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

0 голосов
/ 28 октября 2008

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

...