我有奇怪的问题.我无法关闭页面访问权限
/registration
/login
/resetting
Run Code Online (Sandbox Code Playgroud)
已经授权的用户.
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, role: ROLE_USER }
- { path: ^/admin/, role: ROLE_ADMIN }
Run Code Online (Sandbox Code Playgroud)
为什么具有规则ROLE_USER的用户可以访问页面/登录?我应该如何关闭它?使用模板或security.xml?
如果要访问/登录,如何使用规则ROLE_USER重定向用户?
Symfony2和FOS用户包问题......
我已经在页面的头部实现了我自己的登录表单(根据http://forum.symfony-project.org/viewtopic.php?f=31&t=37767中的说明使用FOS用户包.)
现在,我有错误消息
Variable "csrf_token" does not exist in ::base.html.twig
Run Code Online (Sandbox Code Playgroud)
该论坛上的其他人(上面的网址)有完全相同的问题,并通过放入隐藏的csrf字段来解决它
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
Run Code Online (Sandbox Code Playgroud)
我的问题是:在/登录路径上工作正常,但我的要点是不需要单独的登录页面,我希望我的表单始终集成在页面头中,似乎只有{{csrf_token}}页面由登录控制器呈现时可用...
另外,我如何在那里得到错误消息(闪烁),我假设我必须以某种方式在我的defaultController中包含登录控制器,每次都用它来获取所有这些变量,或者......?或者我应该在标题的该部分中呈现userBundle控制器而不是将一些userBundle模板粘贴到我的脑海中?
我正在使用FOSUserBundle.在我的项目中,我创建了自己的UserBundle并覆盖了控制器,表单和处理程序.现在,当用户尝试注册现有电子邮件时,该网站崩溃(电子邮件对于学说是唯一的).似乎没有进行验证.我以为我会在validation.yml中进行一些验证:
YOP\UserBundle\Entity\User:
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: email
properties:
email:
- Email: ~
Run Code Online (Sandbox Code Playgroud)
为什么不在电子邮件领域进行验证?如何确保考虑我的验证限制?
PS:validation.yml文件不在我的UserBundle中,是不是有问题?
编辑:
我的UserBundle的代码在这里可用 我不明白为什么不再进行验证...
我想为我的项目创建一个som fixtures进行测试.我现在在命令行脚本中执行此操作,但是我发现了Doctrine中的DataFixtures包并想要测试它.我有以下代码:
<?php
// src/Pan100/MoodLogBundle/DataFixtures/ORM/LoadUserData.php
namespace Acme\HelloBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\DependencyInjection\ContainerAware;
use Pan100\MoodLogBundle\Entity\Day;
use Pan100\MoodLogBundle\Entity\Medication;
use Pan100\MoodLogBundle\Entity\Trigger;
use FOS\UserBundle\Doctrine\UserManager;
class MockDataMaker extends ContainerAware
{
/**
* {@inheritDoc}
*/
public function load(ObjectManager $manager)
{
$userManager = $container->get('fos_user.user_manager');
//make some users
$user = $userManager->createUser();
$user->setUsername('John');
$user->setEmail('john.doe@example.com');
$user->setPlainPassword('passord');
$userManager->updateUser($user);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
[InvalidArgumentException]
Could not find any fixtures to load in:
- /var/www/path/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/D
ataFixtures/ORM
- /var/www/path/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Da
taFixtures/ORM
- /var/www/path/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DataFi
xtures/ORM
- /var/www/path/vendor/symfony/monolog-bundle/Symfony/Bundle/MonologBundle/
DataFixtures/ORM
- /var/www/path/vendor/symfony/swiftmailer-bundle/Symfony/Bundle/Swiftmaile
rBundle/DataFixtures/ORM
- /var/www/path/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/
DataFixtures/ORM
- /var/www/path/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBun …
Run Code Online (Sandbox Code Playgroud) 我用Symfony2创建了一个Web应用程序,我正在使用PUGX User Bundle和FosUserBundle来管理2个不同的用户.
这是两个用户之一:
/**
* @ORM\Entity
* @ORM\Table(name="user_Operator")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(fields = "username", targetClass = "Acme\ManagementBundle\Entity\User", message="Username already_used")
* @UniqueEntity(fields = "email", targetClass = "Acme\ManagementBundle\Entity\User", message="Email already_used")
*/
class UserOperator extends User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->addRole('ROLE_OPERATOR');
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试注册时,我填写表单,提交,而不是出现:
Warning: in_array() expects parameter 2 to be array, null given in C:\BitNami\wampstack-
5.4.23-0\frameworks\symfony\vendor\friendsofsymfony\user-
bundle\FOS\UserBundle\Model\User.php line 142
Run Code Online (Sandbox Code Playgroud)
第142行如下:
135 public function addRole($role)
{
$role …
Run Code Online (Sandbox Code Playgroud) 假设我有一个页面http://example.com/page1
我在这里登录了facebook链接.
另外在另一页,第2页,我已经在Facebook上放置了登录链接.
我想要的是,在第1页上用facebook链接点击登录后,它应该重定向到page1,并且在第2页上点击登录链接时,它应该重定向到Page2.
现在,它总是重定向到'example.com/'.
我正在使用Hwioauthbundle与Symfony2中的fosuserbundle集成
根据文档,我能够为FOSUserBundle实体用户配置和存储Facebook ID
我也想存储生日和性别.
hwi_oauth:
firewall_name: secured_area
resource_owners:
facebook:
type: facebook
client_id: <client_id>
client_secret: <client_secret>
scope: "email,user_birthday"
Run Code Online (Sandbox Code Playgroud)
在文档中有一些描述在这里,但我无法让它工作.因为我是初学者,这篇文档对我没有帮助.
我在哪里可以获得包含所有本地数据的facebook响应.
我还需要将这些数据与其他FOSUserBundle字段一起存储.
我正在使用FOS Userbundle,我想添加新角色,如ROLE_ZZZ.
做这个的最好方式是什么?谢谢.
我们的项目使用FOSUserBundle和Symfony 2.5.我们需要在登录后向用户会话添加自定义数据,该数据驻留在数据库中并且是动态的,但应该在所有模板和应用程序内的任何位置访问.
我正在考虑LoginManager.php
从/ user-bundle/Security覆盖该类,但我也不完全确定这是否是最好的选择.
看起来这个logInUser()
方法是添加我们的自定义更改的地方,因为它实际上设置了令牌,但是再次,如果有更聪明的方法,我肯定会使用它.
我正在使用 :
FOSuserbundle安装得很好,并且就像一个护身符。我注意到在数据库中的用户表中,“盐”列始终为空:
以下是我的security.yml文件的摘录:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
Run Code Online (Sandbox Code Playgroud)
为了记录,我添加了2个用户,并添加了命令“ fos:user:create”。
这正常吗?
fosuserbundle ×10
symfony ×10
php ×6
arrays ×1
doctrine ×1
facebook ×1
redirect ×1
session ×1
symfony-2.5 ×1
symfony-3.4 ×1
validation ×1