proxiweb/persona-bundle

Symfony2 Mozilla的Persona安全扩展

安装: 34

依赖者: 0

建议者: 0

安全: 0

星标: 6

关注者: 2

分支: 2

公开问题: 1

类型:symfony-bundle

dev-master 2013-09-14 18:01 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:40:46 UTC


README

Mozilla Persona认证适用于Symfony2

使用此包,您可以为您的Symfony2项目轻松设置Mozilla Persona认证。

先决条件

此版本的包需要Symfony 2.1+和FOSUserBundle。

安装

在您的composer.json中添加PersonaBundle

{
    "require": {
        "proxiweb/persona-bundle": "*"
    }
}

在AppKernel.php中添加PersonaBundle

  ... new Proxiweb\Bundle\PersonaBundle\ProxiwebPersonaBundle(),

现在,运行以下命令让composer下载包

$ php composer.phar update proxiweb/persona-bundle

Composer会将包安装到您的项目的vendor/proxiweb目录中。

配置

  1. 配置FOSUserBundle
  2. 通过电子邮件登录
  3. 认证URL配置
  4. 添加Persona的资产
  5. 演示页面

###2.通过电子邮件登录Persona通过电子邮件认证用户,因此您必须配置FOSUserBundle以启用通过电子邮件登录

# app/config/security.yml
security:
    providers:
        fos_userbundle:
            # replace fos_user.user_provider.username with fos_user.user_provider.username_email
            id: fos_user.user_provider.username_email

###3.认证URL配置Persona通过执行对执行认证的URL的ajax请求来记录用户。PersonaBundle通过访问受保护的URL完成由认证过程启动

# app/config/security.yml
security:
    firewalls:

        person_secured:
            pattern: ^/persona/login    # the secured url which performs authentication
            persona: true
            context: primary_auth       # use the same context as the FOSUserBundle
            anonymous:    true          # so the persona & login authentication will share the same 
        main:                           # security session
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
            context: primary_auth

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/persona/login, role: ROLE_ADMIN }
        - { path: ^/persona/demo, role: IS_AUTHENTICATED_ANONYMOUSLY }   # optional demo page
        - { path: ^/persona/logout, role: IS_AUTHENTICATED_ANONYMOUSLY } # logout url

###4.添加Persona的资产

将脚本添加到执行认证的页面以及您希望Persona自动登录的页面。

<script src="https://login.persona.org/include.js"></script> 

在此脚本之后,包含此包提供的persona_auth.js脚本。您可以使用persona-buttons.css样式表来设计登录和注销按钮。

###5.演示页面PersonaBundle在/persona/demo提供演示页面。它使用assetic,因此如果您想加载此页面,您必须将PersonaBundle添加到Assetic的包参数中。使用FOSUserBundle创建用户foo@bar.org,使用您的邮件登录,如果这是您第一次使用Persona,验证您的电子邮件,享受吧。