我使用FOSUser包并重写注册表单,我使用实体类型选择国家,地区等.这个实体与用户区域设置有关系,我想为每个区域设置编写DQL.如何在不重写FOSUser:registerAction的情况下获取表单中的用户区域设置?
我需要比较用户输入的密码是否有效.我如何获得sha512加密.我也在我的项目中使用FOSUserBundle.
问题:
我们一直在使用FOSUserBundle for Symfony2,一切正常,包括"记住我".
我们最近推出了FOSFacebookBundle.从那以后,"记住我"的"正常"登录被打破了.
例如:
当我们只使用FosUSer如果用户通过登录形式登录,并保持,对于为例5小时没有活动,点击任何链接都继续工作,与logined和标识的用户之后.
当我们激活FosFacebook时,同一个用户也通过登录表单(而不是来自Facebook)登录并保持没有活动的时间.单击任何链接后,他将被重定向到登录表单,再次输入密码后,会再次重定向到目标URL.
如果我们从配置中停用FosFacebook,FosUser的"记住我"将再次正常工作.
题:
FosFacebook打破FosUser"自然"是否正常,请记住我没有使用FB的用户?
如果应该正常工作......任何人都可以看到我们的配置文件中是否有错误?
配置文件:
config.yml
# FOS User
fos_user:
db_driver: %database_method% # other valid values are 'mongodb', 'couchdb'
firewall_name: main
user_class: Common\ODMBundle\Document\User
from_email:
address: %fos_email_address%
sender_name: %fos_sender_name%
profile:
form:
type: fos_user_profile
handler: fos_user.profile.form.handler.default
name: fos_user_profile_form
validation_groups: [Profile]
change_password:
form:
type: fos_user_change_password
handler: fos_user.change_password.form.handler.default
name: fos_user_change_password_form
validation_groups: [ChangePassword]
registration:
confirmation:
enabled: true
template: FOSUserBundle:Registration:email.txt.twig
form:
type: fos_user_registration
handler: fos_user.registration.form.handler.default
name: fos_user_registration_form
validation_groups: [Registration]
resetting:
token_ttl: 600
email:
template: FOSUserBundle:Resetting:email.txt.twig
form:
type: fos_user_resetting …Run Code Online (Sandbox Code Playgroud) 我正在使用Symfony2构建一个包含用户帐户的站点,我有一个部分,其中用户有一个项目列表,所有这些都可以在单击时进行编辑.
目前,当用户点击要编辑的项目时,将会有一个ajax请求来提取与该项目相关的所有信息,并构建一个表单,然后该表单将被放置在当前页面内.
现在这是我的问题,比如一个用户在他们的项目页面上,并且他们清除了他们的浏览器缓存(并且已经注销),当他们点击要编辑的项目时,我已经设置好所以什么都不会发生,但是如果他们在此之后立即尝试登录(使用标准的website.com/login页面),它们将被重定向到之前尝试加载的表单.(此页面只包含一个表单,仅此而已,可能会使用户感到困惑).
我已经在登录到用户个人资料页面后设置Symfony2进行重定向,但仍然会在登录后从ajax请求重定向到表单.
我只是希望在任何情况下登录后都可以将用户重定向到他们的个人资料页面.
所以我读了很多关于模板的重写,以及Symfony中的包的重写.
我正在使用新的Symfony 2.3,我没有在较低版本的Symfony中尝试过这个.
我按照教程中关于覆盖Symfony中的bundle:http: //symfony.com/doc/2.3/cookbook/bundles/inheritance.html
我按照关于覆盖FOSUserBundle控制器的教程,这是真的一样:https: //github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_controllers.md
我有一个名为Acme/WebBundle的软件包.
现在我做了以下事情:
在此捆绑包中创建了文件AcmeUserBundle.php.
<?php
namespace Acme\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AcmeUserBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
Run Code Online (Sandbox Code Playgroud)创建了以下文件结构:
-src
-Acme
-UserBundle
-Controller
RegistrationController.php
-Entity
User.php
-Resources
-translations
-views
AcmeUserBundle.php
Run Code Online (Sandbox Code Playgroud)在RegistrationController.php中,我将命名空间设置为:
namespace Acme\UserBundle\Controller;
Run Code Online (Sandbox Code Playgroud)将FOSUserBundle的注册控制器的内容复制到我的.
添加到registerAction()的开头
die("message");
Run Code Online (Sandbox Code Playgroud)现在,当我去注册表格,默认/注册路线,我没有死,一切正常.它没有看到我的小孩作为一个孩子,没有被覆盖,我一直试图让它工作多年,因此我的问题在这里.
我做错什么了吗?
我目前正在开发一个用于管理用户的Symfony2项目我安装了FosUserBundle软件包,该软件包功能正常,但我找不到如何在创建用户后立即发送包含用户名和密码的电子邮件,因为我说我有两个用户:admin和user类型,管理员将创建具有FOS注册形式的创建形式的用户,在两种用户之间切换只是角色.
我在我的Symfony2应用程序中创建了一个单独的注册机制(使用FOSUserBundle),除了常规注册之外,它还存在.
有没有办法 - 在我创建并持久化用户到数据库之后 - 自动登录当前用户.之后,用户将被重定向到需要登录用户的页面(由于自动登录,用户可以访问该页面)?
这基本上是我创建用户的方法:
public function signupAction(Request $request) {
$user = new User();
$form = $this->createFormBuilder($user)
->...()
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
// Enable User
$user->setEnabled(true);
// Persist to DB
$em->persist($user);
$em->flush();
// Here I need the auto-login before redirecting to _root
return $this->redirect($this->generateUrl('_root'));
}
return $this->render('MyBundle:MyController:signup.html.twig', array(
'form' => $form->createView()
));
}
Run Code Online (Sandbox Code Playgroud) 我开始使用新的Symfony应用程序,我使用FOSUserBundle.我安装它,加载捆绑并配置它.这是我的configuration.yml:
fos_user:
db_driver: orm
firewall_name: main
user_class: Myapp\UserBundle\Entity\User
Run Code Online (Sandbox Code Playgroud)
和我的security.yml:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
in_memory:
memory: ~
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
default:
anonymous: ~
main:
pattern: ^/
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
provider: fos_userbundle
csrf_provider: form.csrf_provider
default_target_path: /
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个应用程序:
我已经成功创建了一个客户端,并且可以使用这样的URL获取访问令牌
但是,当我尝试访问这样的网址时,请访问 http://api.mydomain.com/api/surgeries/45/details?access_token=ACCESS_TOKEN
我被重定向到symfony登录页面,但我不能拥有它,或者我构建的移动应用程序使用此REST API将无法访问.
我使用本教程进行设置(删除那里的User/UserRepository类并将其改为与FOSUserBundle一起使用)http://blog.tankist.de/blog/2013/07/16/oauth2-explained-part-1原理-和-术语/
我不确定我告诉symfony重定向到登录页面的位置,我想将该逻辑更改为仅从令牌进行身份验证.
这是我的设置概述
security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
...
login:
pattern: ^/secured/login$
security: false
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: _security_check
login_path: _demo_login
anonymous: true
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false # can be omitted as its default value
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: …Run Code Online (Sandbox Code Playgroud) 我想在我的布局中获得角色的名称和last_login的日期.
我使用Symfony 2.5和FosuserBundle
所以,当我使用:
{{ app.user.username }}
Run Code Online (Sandbox Code Playgroud)
我得到用户名,但当我使用时:
{{ app.user.roles }}
Run Code Online (Sandbox Code Playgroud)
我得到数组这是很正常的,因为它是数组.
<div class="floatleft marginleft10">
<ul class="inline-ul floatleft">
<li>Espace {{ app.user.username }}</li>
<li><a href="{{ path('fos_user_security_logout') }}">Logout</a></li>
</ul>
<br />
<span class="small grey">Last Login: {{ app.user.last_login }}</span>
</div>
Run Code Online (Sandbox Code Playgroud)
当我添加{{app.user.last_login}}时,我得到了异常:
Method "last_login" for object "My\testBundle\Entity\Collaborateur" does not exist in MytestBundle::layout2.html.twig
Run Code Online (Sandbox Code Playgroud)
任何帮助请!!
fosuserbundle ×10
symfony ×10
ajax ×1
facebook ×1
hash ×1
login ×1
php ×1
redirect ×1
sha512 ×1
symfony-2.3 ×1