将语言环境保留在会话中或与表单一起发送?

时间:2010-01-25 05:04:56

标签: session-state hidden-field

我正在重构我构建的CMS。 CMS可以根据所选的区域设置编辑页面。我将这个选定的区域设置保留在会话中,而CMS的用户浏览他们想要编辑的页面。

现在,我的问题是:
如果用户正在编辑页面并想要提交更改,您是否认为我应该将区域设置作为要提交的表单中的隐藏字段?只是为了安全起见?或者我应该只依赖会话中的语言环境?

3 个答案:

答案 0 :(得分:2)

是的,您应该每次都发布它,因为用户可能在编辑页面时更改了区域设置。结果是页面被来自不同语言环境的内容覆盖。

如果不允许用户编辑其区域设置之外的页面,则必须另外检查是否允许用户编辑指定的页面/区域设置组合(因为它们可能在会话通过时伪造它)。 / p>

答案 1 :(得分:1)

这取决于您希望后退按钮的行为。

如果用户访问了几个页面,然后选择了不同的区域设置,然后点回,希望通过后退按钮撤消区域设置更改

  • 如果存储,则将其存储在隐藏字段或查询字符串中
  • 否则将其存储在cookie中或由cookie索引的数据存储中(例如会话状态)

(如果您希望书签页面(收藏夹)能够记住区域设置,那么您必须将其存储在URL中,通常作为查询字符串。)

答案 2 :(得分:0)

如果您不希望用户切换区域设置,如Pekka建议的那样,您可以从请求中确定区域设置。每次请求时,浏览器都会向您发送该信息。

我会将请求中的值与会话中的值进行比较,并观察更改。您用来处理变更的逻辑取决于您并且灵活。

我不确定您选择的语言,但在ASP.NET中,您可以从HttpRequest.UserLanguages属性中获取语言。

相关问题