【发布时间】:2014-04-22 14:03:48
【问题描述】:
我在使用 FOSUserBundle 时遇到了一些问题。我发现缺少文档,并认为如果他们有一个示例应用程序,我可以下载并查看其源代码,这将非常有帮助。
我的登录路径是/Login。我已经覆盖了树枝模板,以便在导航到我的路线时显示登录表单。但是,我必须在我的 LoginAction 中添加一些默认值才能使其正常工作。
我的登录操作:
/**
* @Route("/Login", name="wx_exchange_login")
* @Template("WXExchangeBundle:User:login.html.twig")
* User log up - Open to public
* Authenticates users to the system
*/
public function loginAction()
{
return array('error' => 0, 'csrf_token' => 'foobar', 'last_username' => 'foobar');
}
FOSUserBundle LoginAction
我的印象是,由于 FOSUserBundle 已经定义了 Action 代码,所以我的 loginAction 中不需要任何代码。从文档中不清楚我应该在我的行动中做任何事情。我在网上看到了一些示例,显示人们已将相关 FOSUserBundle 操作中的代码复制到他们自己的操作中。
实现 FOSUserBundle 以将其代码复制到您自己的操作中是正确的方法吗?
编辑:我没有覆盖捆绑包。
编辑 2: 我的 routing.yml 与文档略有不同。我的第一个条目是:
wx_exchange:
resource: "@WXExchangeBundle/Controller/"
type: annotation
prefix: /
其余条目如文档中所述(导入 FOSUserBundle 路由)。
Security.yml:
# app/config/security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface:
algorithm: bcrypt
cost: 15
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /Login
logout: true
anonymous: true
access_control:
- { path: ^/Login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/SignUp, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/ResetPassword, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/Confirm, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/Dashboard/, role: ROLE_ADMIN }
【问题讨论】:
-
你确定你读完了这一切吗? github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/… 对我来说似乎很清楚。您使用的是哪个版本的捆绑包? 1.2、1.3 还是最新版本?如果你真的走不出来,我会尽快帮你:)顺便说一句,你的 app/config/security.yml 文件是什么样子的?
-
我正在使用主版本,并且我已经完成了第一页上的步骤。根据完成这些步骤后的文字,我现在应该可以在app.com/app_dev.php/login 登录,但我发现不是这种情况。
-
你的 security.yml 文件的内容是什么?如果一切正常,我想看看这个:) 谢谢!
-
@Wcool 刚刚发布。
-
你得到什么错误?在我的登录表单中,我需要下划线。看我的代码:表单
<form action="{{ path("fos_user_security_check") }}" method='post' class='form-validate' id="test">CSRF输入<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />密码<input type="password" id="password" name="_password" required="required">提交btn<input type="submit" name="_submit"。
标签: symfony fosuserbundle