- FOSUserBundle简介
提供在Symfony2用户系统的支持,方便灵活的框架,用户管理旨在处理用户注册,密码找回等共通业务。
特点:
用户可以通过Doctrine ORM, MongoDB/CouchDB ODM or Propel创建存储
支持用户通过邮箱注册
支持密码重置
包括单元测试
*该框架不支持权限认证,但是可以通过 user provider 使用SecurityBundle
- 安装
当前版本需要Symfony2.1 +,如果您正在使用Symfony的2.0.x版本,请使用束的1.2.x版本。
如果想使用国际化,需要确认translator已经启用。
# app/config/config.yml
framework:
translator: ~
快速安装方法:
1. 修改引用工程的composer.json,如下:
"require": {
//......
"friendsofsymfony/user-bundle": "1.3.5"
},
2. 执行命令[composer update]下载该框架
3. 修改代码,使该框架有效,如下:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new FOS\UserBundle\FOSUserBundle(),
);
}
4. 创建自己的user类,该框架提供了父类,有很多参数,可以很容易创建自己的entity。
a. 从Model文件夹继承父User类
b. 创建id字段,因为从父类继承,数据必须声明为protected类型
c. Doctrine ORM User Class,Annotations
<?php
// src/Portal/LoginUserBundle/Entity
namespace Portal\LoginUserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Entity\User as BaseUser;
/**
* Person
*
* @ORM\Table(name="for_user")
* @ORM\Entity(repositoryClass="Portal\LoginUserBundle\Entity\UserRepository")
*/
class User extends BaseUser
{
public function __construct()
{
parent::__construct();
// own logic
}
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="mail", type="string")
**/
protected $email;
/**
* @ORM\Column(name="password", type="string")
**/
protected $password;
}
* user是数据库保留的关键字,所以最好不要用为表名
5. 执行命令[php app/console doctrine:generate:entities]生成get和set方法
6. 为了让框架的security.yml
# app/config/security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
7. 设置config文件
# app/config/config.yml
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Portal\LoginUserBundle\Entity\User
8. 设置routing
# app/config/routing.yml
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /profile
*为了使用内置的电子邮件功能(确认账号,密码重置),你必须激活和配置SwiftmailerBundle。
9. 更新数据库表结构,[php app/console doctrine:schema:update --force]
10. http://app.com/app_dev.php/login

本文介绍如何使用FOSUserBundle框架在Symfony2中实现用户管理系统,包括用户注册、密码找回等功能,以及安装、配置和使用方法。
1539

被折叠的 条评论
为什么被折叠?



