本文概述
- Doctrine
- 使用fos_user.user_manager
- 在用户类别中
- 使用FOSUserBundle命令行工具
【如何在Symfony 3中使用FOSUserBundle向用户添加角色】在本文中, 你将学习如何在Symfony 3中使用FOSUserBundle向用户添加角色。
Doctrine你可以使用用户对象的addRole方法向用户添加角色。
<
?phpnamespace ourcodeworld\adminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class AdminController extends Controller
{
public function indexAction()
{
// Retrieve entity manager of doctrine
$em = $this->
getDoctrine()->
getManager();
// Search for the UserEntity, retrieve the repository
$userRepository = $em->
getRepository("myBundle\Entity\User");
// or $userRepository = $em->
getRepository("myBundle:User");
$user = $userRepository->
findOneBy(["username" =>
"AnyUsername"]);
// Add the role that you want !
$user->
addRole("ROLE_ADMIN");
// Save changes in the database
$em->
persist($user);
$em->
flush();
}
}
使用fos_user.user_manager你可以使用fos用户管理器创建用户, 该服务可以从容器中检索(控制器中的$ this-> get(‘ serviceName’ )或容器中任何其他位置的$ container-> get(” )在上下文中)。
<
?phpnamespace ourcodeworld\adminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class AdminController extends Controller
{
public function indexAction()
{
$userManager = $this->
get('fos_user.user_manager');
// Use findUserby, findUserByUsername() findUserByEmail() findUserByUsernameOrEmail, findUserByConfirmationToken($token) or findUsers()
$user = $userManager->
findUserBy(['id' =>
1]);
// Add the role that you want !
$user->
addRole("ROLE_ADMIN");
// Update user roles
$userManager->
updateUser($user);
}
}
在用户类别中你还可以在每次注册用户时在User Entity类的构造函数中设置角色:
<
?php
// src/Acme/UserBundle/Entity/User.phpnamespace myBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
public function __construct()
{
parent::__construct();
// Add role
$this->
addRole("ROLE_ADMIN");
}
}
$ this的上下文将特别是BaseUser。
使用FOSUserBundle命令行工具默认情况下, 实现FOSUserBundle的symfony应用程序将自动访问此捆绑软件的命令行工具。该工具提供了一个有用的命令, 即fos:user:promote命令, 可用于向用户添加角色。此命令使你可以向用户添加角色或使该用户成为超级管理员:
php bin/console fos:user:promote username ROLE_ADMIN
玩得开心 !
推荐阅读
- 如何使用自己的Symfony 3 API解决客户端”Access-Control-Allow-Origin”请求错误
- 如何在Symfony 3中使用FOSUserBundle创建自定义登录事件(onLogin)监听器
- 在PHP中正确创建URL标记(包括UTF-8的音译)
- 如何使用纯PHP重定向到页面
- 如何使用C#在WinForms中实现和使用循环进度条
- Android(背景颜色和图像同时)
- 在android studio中根据时间改变背景
- OnApplicationFocus()和OnApplicationPause()之间的区别是什么()
- Android Spinner在Espresso测试中点击后立即被解雇