想知道如何实现新用户的创建,但指定他的角色.目前,当我创建一个新用户时,该程序自动与ROLE_ADMIN角色相关联.
任何信息/代码/示例都非常受欢迎.
提前致谢.
我正在尝试为FOSUser Bundle创建一个链接..看起来很简单,但由于某种原因我遇到了问题..
我想在我的树枝内创建一个"登录"链接.
<a class="Link" href="{{ url('/login') }}">Login</a>
Run Code Online (Sandbox Code Playgroud)
应该指向
http://localhost:9911/Symfony/web/app_dev.php/login
我的控制器中定义的.
我做错了吗?
我想建立一个用户可以登录注册的网站.对于用户管理,我使用FOSUserbundle.现在我想为FOSUserBundle使用与其他bundle不同的数据库连接.我的config.yml文件如下所示:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database1_driver%"
host: "%database1_host%"
port: "%database1_port%"
dbname: "§database1_name%"
user: "%database1_user%"
password: "%database1_password%"
charset: UTF8
user:
driver: "%database2_driver%"
host: "%database2_host%"
port: "%database2_port%"
dbname: "%database2_name%"
user: "%database2_user%"
password: "%database2_password%"
charset: UTF8
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
MyProjectMainBundle: ~
user:
connection: user
mappings:
MyProjectUserBundle: ~
Run Code Online (Sandbox Code Playgroud)
当我尝试加载页面时,我收到错误MappingException: The class 'MyProject\UserBundle\Entity\User' was not found in the chain configured namespaces MyProject\MainBundle\Entity, FOS\UserBundle\Model
.
我完全按照FOSUserBundle的文档进行操作,如果我使用的话它正在工作
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
Run Code Online (Sandbox Code Playgroud)
在config.yml中.唯一的问题是,它只生成文档中新实体中定义的表.只生成一个id字段,而不是像它应该生成的整个fos_user表.
我知道以前曾经问过一些类似的问题,但我尝试使用那里的所有解决方案,但它没有用.那么我该如何解决这个问题呢?它甚至可能吗?我真的需要使用单独的数据库,因为我的项目将使用很多表,我不希望它太乱.
我安装了HWIOAuthBundle并完成了所有内容,如下所示:https://gist.github.com/danvbe/4476697
但是当我试图去这里时我有这个错误:"/ login/google"
没有名称为"google"的资源所有者.
我和其他API有着同样的错误:yahoo,linkedin,windows_live
我不知道为什么因为我已经完成了很好的security.yml:
jms_security_extra:
secure_all_services: false
expressions: true
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
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:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
remember_me: true
csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
remember_me:
key: %secret%
anonymous: true
logout: true
oauth:
resource_owners:
yahoo: "/login/check-yahoo"
google: "/login/check-google"
windows_live: "/login/check-windows_live"
linkedin: "/login/check-linkedin"
login_path: /login
failure_path: /login
oauth_user_provider:
service: my_user_provider
logout:
path: /logout
target: /
login: …
Run Code Online (Sandbox Code Playgroud) 我正在使用带有FOSUserBundle的SonataUserBundle.在AppKernel.php中它看起来像这样:
new FOS\UserBundle\FOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
Run Code Online (Sandbox Code Playgroud)
SonataUserBundle的一些控制器已被覆盖.
现在我想要覆盖FOSUserBundle ChangePasswordController.所以我做了:src/Application/FOS/UserBundle/Controller/ChangePasswordController.php src/Application/FOS/UserBundle/ApplicationFOSUserBundle.php
<?php
namespace Application\FOS\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class ApplicationFOSUserBundle extends Bundle
{
/**
* {@inheritdoc}
*/
public function getParent()
{
return 'FOSUserBundle';
}
}
Run Code Online (Sandbox Code Playgroud)
以及修改过的AppKernel.php
new FOS\UserBundle\FOSUserBundle(),
new Application\FOS\UserBundle\FOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
Run Code Online (Sandbox Code Playgroud)
问题是......它无法正常工作.
致命错误:带有消息'Bundle"FOSUserBundle"的未捕获异常'LogicException'由两个捆绑包"SonataUserBundle"和"ApplicationFOSUserBundle"直接扩展.在第2364行的/home/piotr.gawlowski/dev_dash_devel/dev-dash/app/bootstrap.php.cache中(!)LogicException:Bundle"FOSUserBundle"由两个包"SonataUserBundle"和"ApplicationFOSUserBundle"直接扩展.在2364行的/home/piotr.gawlowski/dev_dash_devel/dev-dash/app/bootstrap.php.cache中
我正在使用FOSUserBundle作为管理部分以及前端,遵循以下指令:
https://github.com/FriendsOfSymfony/FOSUserBundle/issues/849
Run Code Online (Sandbox Code Playgroud)
对于前端一切正常,但对于管理部分,当我访问我的管理区域/admin
然后我被重定向到登录页面/admin/login
(这是正确的).一旦我提供管理员用户名和密码,然后根据登录后的默认目标路径
default_target_path: /admin/
Run Code Online (Sandbox Code Playgroud)
在security.yml中定义它重定向到/admin
(也是正确的)但我得到403禁止错误
**Access Denied**
403 Forbidden - AccessDeniedHttpException
1 linked Exception:
AccessDeniedException
Run Code Online (Sandbox Code Playgroud)
在我的security.yml中,当我删除以下行:
- { path: ^/admin/, role: ROLE_ADMIN }
Run Code Online (Sandbox Code Playgroud)
然后我可以在登录后访问/管理区域.
我还观察到,每当我/register
在前端创建一个新用户时,它都会进入fos_user数据库表a:0:{}
的角色字段.现在我想知道:
我需要在脚本级别进行哪些更改才能创建不同类型的用户,例如admin,普通用户等,以便我删除的上述security.yml代码可以在不删除的情况下工作
我试图在Symfony 2.4中的事件监听器中获取用户ID,但据我所知,EventListener未被控制器调用,因此我无法使用
$这 - >的getUser();
获得身份证的最佳方式是什么?
我想过在调用事件的services.yml中给它.
感谢anyhelp或任何有用的文档.
问候,
我尝试安装Sonata User Bundle,但是执行命令时配置出现问题
app/console sonata:easy-extends:generate SonataUserBundle -d src
Run Code Online (Sandbox Code Playgroud)
git bash显示此错误:
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
The service "sonata.user.orm.group_manager" has a dependency on a non-exist
ent parameter "fos_user.model.group.class". Did you mean this: "fos_user.mo
del.user.class"?
Run Code Online (Sandbox Code Playgroud) symfony doctrine-orm fosuserbundle sonata-admin sonata-user-bundle
我正在开发一个REST
API Symfony 3
.现在我想向用户发送一个重置密码的链接.这应该通过向以下内容发送请求来完成:
"/resetpassword/{userEmail}"
Run Code Online (Sandbox Code Playgroud)
如何为用户创建重置密码的链接?我现在已经完成了如何通过我自己发送电子邮件,但不知道如何生成此链接或如何处理链接.
我想通过使用Symfony 3.4中的compilerPass来覆盖FosUserbundle的控制器(RegistartionController),所以这是我的代码
=== 注册用户编译器密码 ===
<?php
namespace myBundle;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class RegisterUserCompilerPass extends CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$container
->getDefinition('fos_user.registration.controller')
->setClass(MyBundle\Controller\ReplaceRegistrationController::class) ;
}
}
Run Code Online (Sandbox Code Playgroud)
这是添加时的文件,将其添加到主包类中
<?php
namespace MyBundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use MyBundle\DependencyInjection\Compiler\RegisterUserCompilerPass ;
// use Crypto\UserBundle\Manager\ReplaceRegistration ;
class CryptoUserBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new RegisterUserCompilerPass() );
}
}
Run Code Online (Sandbox Code Playgroud)
当访问我的注册路径时我得到
编译错误:类 MyBundle\DependencyInjection\Compiler\RegisterUserCompilerPass 无法从接口 Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface 扩展
fosuserbundle ×10
symfony ×10
php ×5
overriding ×2
admin ×1
connection ×1
database ×1
doctrine-orm ×1
login ×1
oauth ×1
rest ×1
sonata-admin ×1