Сохранить локаль в сеансе или отправить вместе с формой? - PullRequest
0 голосов
/ 25 января 2010

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

Теперь мой вопрос:
Если пользователь редактирует страницу и хочет отправить изменения, считаете ли вы, что я должен включить локаль как скрытое поле в форму, которую нужно отправить? Просто чтобы быть на безопасной стороне? Или я должен просто полагаться на локаль, присутствующую в сеансе?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2010

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

Если пользователю не разрешено редактировать страницы за пределами своей локали, вам придется дополнительно проверить, разрешено ли пользователю редактировать указанную комбинацию страницы / локали (поскольку они могут подделать ее, когда она проходит через сеанс).

1 голос
/ 03 февраля 2010

Зависит от того, что вы хотите, чтобы поведение кнопки назад было.

Если пользователь заходит на несколько страниц, затем выбирает другую локаль, а затем нажимает кнопку назад, вы хотите, чтобы изменение локали было отменено кнопкой возврата ?

  • Если это так, сохраните его в скрытом поле или строке запроса
  • В противном случае сохраните его в файле cookie или в хранилище данных, индексируемом файлом cookie (например, состояние сеанса)

(Если вы хотите, чтобы страница закладки книги (избранное) помнила локаль, вы должны сохранить ее в URL, обычно в виде строки запроса.)

0 голосов
/ 08 февраля 2010

Если вы не ожидаете, что пользователь переключит локали, как предлагает Pekka, вы можете определить локаль из запроса. Браузер будет отправлять вам эту информацию при каждом запросе.

Я бы сравнил значение в запросе со значением в сеансе и наблюдал за изменениями. Какая логика используется для обработки изменений, зависит от вас и является гибкой.

Я не уверен, какой язык вы выберете, но в ASP.NET вы можете получить языки из свойства HttpRequest.UserLanguages ​​.

...