使用FOSOauthServerBundle,FOSUserBundle和Symfony2.0时,我跟踪this documentation(http://blog.logicexception.com/2012/04/securing-syfmony2-rest-service-wiith.html)关于在使用FOSOAuthServerBundle实现OAuth2时创建自己的auth_login表单。顺便说一句,从我卑微的观点来看,这是一篇好文章。
我必须说我差不多完成了。但是有一种奇怪的行为使它无法发挥作用。谁能看看我的问题,并试着给我一个关于可能解决方案的线索?
以前的考虑因素
在开发本页面的说明之前,我已经配置了FOSOAuthServerBundle。我完成了这个过程,并且我正确地获得了令牌,验证了用户凭据并创建了会话。唯一的问题是我没有与我网站上的主要登录表单不同的特定登录表单。因此,尝试获取授权代码时出现的页面是正常登录页面。我想要的是,如手册中所述,显示不同的登录表单,更小,更具体,以使其对移动设备友好。
问题
准确开发本页描述的内容,我得到了这样的行为:
在登录过程之后,Symfony正确地尝试使用适当的参数再次重定向到“^ / oauth / v2 / auth”,但是,惊喜!!,某些拦截器或某些东西正在捕获该请求,我又一次重定向到/ auth_login。
唯一的区别
在我拥有的内容和手册中描述的内容之间,我只是使用一个twig页面来显示auth_login表单。我不认为这可能是一个问题,但无论如何,我接下来发布它:
<form action="{{ path("acme_oauth_server_auth_login_check") }}" method="post">
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
<label for="username">{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">{{ 'security.login.password'|trans({}, 'FOSUserBundle') }}</label>
<input type="password" id="password" name="_password" />
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
<label for="remember_me">{{ 'security.login.remember_me'|trans({}, 'FOSUserBundle') }}</label>
<input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}" />
</form>
还有一件事
虽然它也不起作用,但我正在考虑一个技巧(或解决方法),其中包括将以下内容放在表单的action字段中:
{{ path("fos_user_security_check") }}
这意味着使/ auth_login表单将数据发送到FOSUserBundle而不是FOSOAuthServerBundle使用的相同login_check。
在这种情况下的效果如下:
所以...一切都很奇怪。
如果有人可以帮助我,我真的很感激。
非常感谢
佩德罗