【发布时间】:2011-10-29 02:30:26
【问题描述】:
我有一个动作,它需要 sfGuard 保护的 POST 数据。这意味着如果用户没有登录,POST 数据将被发送到登录表单。通常情况下,这不是问题,用户继续登录,必须重新提交数据。
不幸的是,登录表单似乎正在使用 POST 数据,就好像它是使用表单本身提交的一样。这意味着它抱怨缺少必需的用户名和密码字段,并且抱怨缺少 CSRF 令牌。最后一个问题在提交表单后并没有消失,这意味着用户无论如何都无法登录。
如果未登录,则不应向用户显示表单,但用户可能会在表单仍处于打开状态时注销。所以我问的是保持界面防水和无错误的利益。
这是 sfGuard 的缺点,可以避免,还是我做错了什么?
为了澄清,路线如下所示:
add_subgroup:
url: /group/:id/add
class: sfPropelRoute
options:
model: Group
type: object
param: { module: subgroups, action: create }
requirements:
group_id: \d+
sf_method: [post]
用于提交请求的表单如下:
<form action="<?php echo url_for('add_subgroup', $group) ?>" method="post">
<input type="hidden" name="group_id" value="<?php echo $group->getId() ?>" />
<input type="text" name="subgroup_id" />
<input type="submit" class="button" value="Add" />
</form>
【问题讨论】:
-
你能说得更具体一点,你是想制作一个登录表单还是什么?
-
我正在尝试调用安全操作。如果用户没有登录,它会转到现有的登录表单。由于该操作需要 POST 数据,因此该 POST 数据会干扰表单。你能更具体地说明我应该更具体的内容吗?
-
如果用户未登录,您将如何处理?如果您发出标头重定向,则应清除 POST 数据。如果您改为包含它,则将显示 POST 数据。
-
在发帖需要认证的情况下,为什么未经认证的用户可以看到表单?
-
@watcher sfGuard 在用户未登录的情况下处理转发。我不相信这是一个标头重定向。
标签: php post symfony1 symfony-1.4 sfguard