nee*_*raj 0 login admin symfony fosuserbundle
我正在使用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代码可以在不删除的情况下工作
默认情况下,创建的用户具有ROLE_USER保存在DB中的角色,就像转换为JSON的空数组一样a:0:{}.在FOSUserBundle中存在一些有用的命令行工具.你应该使用像这样的set用户升级用户ROLE_ADMIN:
$ php app/console fos:user:promote username ROLE_ADMIN
Run Code Online (Sandbox Code Playgroud)
之后,您的username用户将可以访问管理面板,您可以在其中手动宣传其他用户.
要创建具有不同ROLE类型的用户,您应该为fos_user.registration.initialize(或甚至fos_user.registration.success)事件编写事件侦听器,如下所示:
class RegistrationListener
{
public function setUserRole(UserEvent $event)
{
$request = $event->getRequest();
if (/* some conditions */) {
$user = $event->getUser();
$user->addRole('ROLE_STH');
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用此监听器进行设置时请小心ROLE_ADMIN.提升用户命令旨在添加类似的角色ROLE_ADMIN.
| 归档时间: |
|
| 查看次数: |
5134 次 |
| 最近记录: |