在用户使用FOSUserBundle的密码重置重置密码后,默认情况下,他被重定向到FOSUserProfile.我想重定向到另一条路线.这是可能的,如果可以,怎么样?
例如,我向控制器中当前经过身份验证的用户授予新角色,如下所示:
$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');
$em->persist($loggedInUser);
$em->flush();
Run Code Online (Sandbox Code Playgroud)
在下一页加载时,当我再次获取经过身份验证的用户时:
$loggedInUser = $this->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)
他们没有被授予这个角色.我猜这是因为用户存储在会话中需要刷新.
我该怎么做呢?
如果有所作为,我正在使用FOSUserBundle.
我从Symfony 4开始,我想通过以下链接安装FosUserBundle:https://symfony.com/doc/master/bundles/FOSUserBundle/index.html
第一:
我的问题是我不知道在哪里找到"app/config/config.yml"文件来取消注释翻译并配置:
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
Run Code Online (Sandbox Code Playgroud)
第二:
我想我必须在"config/packages /"目录中创建security.yml文件,是吗?
第三:
并在哪个文件中添加路由?
请问你能帮帮我吗 ?:)
我有覆盖实体的问题.我需要这个领域emailCanonical
不是唯一的.
以下是我所做的:根据Doctrine2文档,UserBundle\Resources\config\doctrine\User.orm.xml
我已经添加了以下attribute-overrides
配置
<attribute-overrides>
<attribute-override name="emailCanonical">
<field column="email_canonical" unique="false" name="emailCanonical" />
</attribute-override>
</attribute-overrides>
Run Code Online (Sandbox Code Playgroud)
然后我运行了以下控制台命令
$ php app/console doctrine:migrations:diff
$ php app/console doctrine:migrations:migrate
Run Code Online (Sandbox Code Playgroud)
一切都很好.emailCanonical
是非独特的.但是现在,当我需要在其他项目包中生成一个实体时,我有一个奇怪的错误:
$ php app/console doctrine:generate:entities SkyModelsBundle:Category
Generating entity "Sky\Bundle\ModelsBundle\Entity\Category"
[Doctrine\ORM\Mapping\MappingException]
Invalid field override named 'emailCanonical' for class 'Sky\Bundle\UserBundle\Entity\User'.
doctrine:generate:entities [--path="..."] [--no-backup] name
Run Code Online (Sandbox Code Playgroud)
但是,如果我从xml映射中删除覆盖设置,一切正常.
我已经在另一台具有相同规格的计算机上安装了我的Symfony项目,当我使用fosuserbundle登录时收到以下错误:
Authentication request could not be processed due to a system problem.
我在app/logs文件中找不到任何有趣的东西.我以开发模式运行应用程序.手动和从控制台清除缓存.我用doctrine:database:create设置了db.它可以创建一个新用户, fos:user:create
并且已成功保存到数据库中.
我不知道从哪里开始.
我正在我的应用程序中集成FOSUserBundle,我试图php bin/console doctrine:migration:diff
按照推荐的设置运行.
我有系统地得到一个:
In ArrayNode.php line 319:
Unrecognized option "resource" under "fos_user"
Run Code Online (Sandbox Code Playgroud)
然而,我在我的网站中设置了以下内容config/packages/routing.yaml
:
framework:
router:
strict_requirements: ~
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我有"friendsofsymfony/user-bundle": "~2.0"
我的composer.json
并且跑了composer update
.
更新
我fos_user.yaml
是:
fos_user:
db_driver: orm
firewall_name: main
user_class: App\Entity\Admin\User
from_email:
address: no_reply@xxx.com
sender_name: xxx
Run Code Online (Sandbox Code Playgroud) 我想在FOSUserBundle(Symfony2)中创建一个新用户,但我总是得到相同的消息(我正在使用php app/console fos:user:create
):
没有为帐户"MyProject\UserBundle\Entity\User"配置编码器.
进口顺序正确
public function registerBundles()
{
$bundles = array(
//...
new MyProject\UserBundle\MyProjectUserBundle(),
new FOS\UserBundle\FOSUserBundle(),
);
Run Code Online (Sandbox Code Playgroud)
安全文件:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
Run Code Online (Sandbox Code Playgroud)
但我总是得到同样的错误......你知道如何解决这个问题吗?这里的解决方案 对我不起作用
谢谢
我想在FOSUserBundle / profile/edit上激活电子邮件确认
在/ profile/edit中,您已经登录,您可以编辑用户名或输入当前密码的电子邮件地址.现在我想发送一封确认电子邮件,如果用户编辑电子邮件地址:)
在FOSUserBundle配置参考中我没有找到设置来执行此操作... https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/configuration_reference.md
这些是我目前的设置:
fos_user:
db_driver: orm
firewall_name: main
user_class: Acme\CoreBundle\Entity\User
registration:
confirmation: { enabled: true }
from_email:
address: noreply@%domain%
sender_name: %site_name% Staff
resetting:
token_ttl: %reset_password_ttl%
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?
我正在使用FOSUserBundle来管理我的用户.为了注册用户,我重用了满足我需求的包的形式.不过,我需要设置我的字段的一些属性.这是通过像这样的小枝很容易做到的:
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "Username"} }) }}
Run Code Online (Sandbox Code Playgroud)
现在,我的目标是在占位符上进行自动翻译,因此我提出了以下代码:
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "{{'security.login.usernameplaceholder'|trans}}"} }) }}
Run Code Online (Sandbox Code Playgroud)
此前代码生成的输入占位符值等于{{'security.login.usernameplaceholder'| trans}}
为了摆脱这个问题,我尝试为此设置变量,但symfony产生了错误!
{% set usernameplaceholder = {{'security.login.usernameplaceholder'|trans}} %}
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': usernameplaceholder} }) }}
Run Code Online (Sandbox Code Playgroud)
有什么建议可以解决这个问题吗?
谢谢,
我尝试使用以下命令从命令窗口创建具有FOsUserBundle的管理员用户:
php app/console fos:user:create
Run Code Online (Sandbox Code Playgroud)
在我的项目中,管理员用户以强制性的方式扩展其他用户.所以,当我选择用户名,邮件和密码时,它会告诉我:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'latitude' cannot be null
Run Code Online (Sandbox Code Playgroud)
如何在AdminUser中设置值"latitude"?我也使用PUGXMultiUserBundle.