我正在重构我构建的 CMS。CMS 能够根据所选的语言环境编辑页面。当 CMS 的用户浏览他们喜欢编辑的页面时,我将这个选定的语言环境保留在会话中。
现在,我的问题是:
如果用户正在编辑页面并想要提交更改,您是否认为我应该将语言环境作为隐藏字段包含在要提交的表单中?只是为了安全起见?还是我应该只依赖会话中存在的语言环境?
我正在重构我构建的 CMS。CMS 能够根据所选的语言环境编辑页面。当 CMS 的用户浏览他们喜欢编辑的页面时,我将这个选定的语言环境保留在会话中。
现在,我的问题是:
如果用户正在编辑页面并想要提交更改,您是否认为我应该将语言环境作为隐藏字段包含在要提交的表单中?只是为了安全起见?还是我应该只依赖会话中存在的语言环境?
是的,您绝对应该每次都发布它,因为用户可能在编辑页面时更改了语言环境。结果将是页面被来自不同语言环境的内容覆盖。
如果不允许用户在其区域设置之外编辑页面,您将必须另外检查是否允许用户编辑指定的页面/区域设置组合(因为他们可能会在通过会话时伪造它)。
这取决于您希望后退按钮的行为是什么。
如果用户访问了几个页面,然后选择了不同的区域设置,然后返回,是否希望通过返回按钮撤消区域设置的更改?
(如果您希望书签页面(收藏夹)记住语言环境,那么您必须将其存储在 URL 中,通常作为查询字符串。)
如果您不希望用户像 Pekka 建议的那样切换语言环境,您可以从请求中确定语言环境。浏览器会在每次请求时将该信息发送给您。
我会将请求中的值与会话中的值进行比较并观察变化。您使用什么逻辑来处理更改取决于您并且灵活。
我不确定您选择的语言,但在 ASP.NET 中,您可以从HttpRequest.UserLanguages属性中获取语言。