【发布时间】:2014-09-02 11:19:47
【问题描述】:
我希望允许用户在登录后(例如在 facebook 上)在他们的个人资料页面上编辑项目。让我们将此页面称为profile.cfm。
我很困惑如何允许页面的内联编辑(即,用表单输入替换页面元素,以便用户可以就地编辑内容)只有当用户登录并且他们的凭据与他们的页面匹配时想要编辑。
传统上,我会有一个单独的页面来编辑像profile-edit.cfm 这样的个人资料。在这个页面上,我会检查他们想要编辑的配置文件的 ID 是否与存储在他们的 Session 变量中的 ID 相同。如果一切都匹配,则页面将显示。否则会失败。
但是,对于 JS 内联编辑,没有单独的编辑页面来处理安全检查。那么如何才能只有在正确的用户登录时才能启用 JS 编辑功能呢?我当然不希望用户修改其他人的个人资料。仅仅基于登录凭据禁用/启用内联编辑 Javascript 代码是不够的,因为可以使用 Firebug 等轻松将其重新打开。
当然,即使他们可以启用 javascript 并不意味着服务器会接受编辑,因为它会进行自己的验证。只是我宁愿用户在没有正确登录凭据的情况下甚至无法在视觉上编辑页面。
这是否只是基于 javascript 的控件的预期权衡,因为它们可能对用户可见(当然是恶意修改页面)将无法正常工作,具体取决于其他变量?
从逻辑/概念的角度来看,我一直坚持这一点。
【问题讨论】:
-
您如何存储这些首选项?
-
当用户登录时,我将他们的 ID 存储在会话变量中,例如会话.配置文件ID。为了确保正确的人登录,它将类似于
<cfif structkeyexists(Session, 'ProfileID') and Session.ProfileID EQ URL.ProfileID>,然后允许用户编辑此配置文件。这可以通过使用单独模板的 Coldfusion 轻松实现。但它的内联操作让我感到困惑
标签: javascript jquery coldfusion coldfusion-10