misd / raven-bundle
为您的 Symfony2 应用程序添加 Raven 认证
Requires
- php: >=5.3.3
- ext-openssl: *
- symfony/framework-bundle: ~2.2
- symfony/security-bundle: ~2.2
Requires (Dev)
- symfony/browser-kit: ~2.2
- symfony/form: ~2.2
- symfony/process: ~2.2
- symfony/yaml: ~2.2
This package is auto-updated.
Last update: 2024-09-11 00:45:47 UTC
README
此捆绑包包含一个 Symfony2 认证提供者,允许用户通过剑桥大学的中央认证服务 Raven 登录到 Symfony2 应用程序。
它还包含一个用户提供者,允许任何通过 Raven 认证的用户访问您的应用程序。
作者
- Chris Wilkinson chris.wilkinson@admin.cam.ac.uk
该捆绑包使用了基于 UcamWebauth PHP 类 的代码。
需求
安装
-
将捆绑包添加到您的依赖项中
// composer.json { // ... "require": { // ... "misd/raven-bundle": "~1.0" } }
-
使用 Composer 下载和安装捆绑包
$ php composer.phar update misd/raven-bundle
-
在您的应用程序中注册捆绑包
// app/AppKernel.php class AppKernel extends Kernel { // ... public function registerBundles() { $bundles = array( // ... new Misd\RavenBundle\MisdRavenBundle(), // ... ); } // ... }
配置
防火墙
要启用 Raven 认证,将 raven: true
添加到防火墙配置中
// app/config/security.yml
security:
firewalls:
raven_secured:
pattern: ^/secure/.*
raven: true
用户配置
只要用户名是用户的 CRSid,就可以使用正常的 Symfony2 用户提供者。
如果您希望任何成功通过 Raven 认证的用户都能访问您的应用程序,可以使用捆绑包的 Raven 用户提供者。
// app/config/security.yml
security:
providers:
raven:
id: raven.user_provider
用户提供者返回一个具有 ROLE_USER
角色的 Misd\RavenBundle\Security\User\RavenUser
实例。
这可以与其他提供者一起使用,以授予某些用户额外的角色。例如
// app/config/security.yml
security:
providers:
chain_provider:
chain:
providers: [in_memory, raven]
in_memory:
memory:
users:
abc123: { roles: [ 'ROLE_ADMIN' ] }
raven:
id: raven.user_provider
资源描述
您可以将您的应用程序名称添加到 Raven 登录页面
// app/config/config.yml
misd_raven:
description: "My application"
页面上的文本现在将包含类似于 "此资源称自己为 'My application',并且是 ... " 的内容。
测试 Raven 服务
在开发期间,特别是在不在大学网络上时,有时需要使用 测试 Raven 服务。您可以使用此服务代替实时服务。
// app/config/config_dev.yml
misd_raven:
use_test_service: true
绝对不能 在生产中使用测试 Raven 服务:它可能会损害您的应用程序。保留在 config_dev.yml
中!
异常
该捆绑包可以抛出各种异常。要捕获它们,设置 事件监听器 并实现您的逻辑(显示消息、重定向到另一个页面等)。
Misd\RavenBundle\Exception\AuthenticationCancelledException
如果用户在 Raven 登录屏幕上点击 '取消',则会抛出此异常。
Symfony\Component\Security\Core\Exception\UsernameNotFoundException
如果用户未被配置,则会抛出此异常。如果您使用的是 Raven 用户提供者,则永远不会看到此异常。
Misd\RavenBundle\Exception\RavenException
如果捆绑包或 Raven 本身出现问题,则会抛出此异常。由于这是一个异常状态,您可能不需要捕获它(并让 500 内部服务器错误
返回)。它有以下子类型
Misd\RavenBundle\Exception\LoginTimedOutException
:如果 Raven 响应超过 30 秒。
Misd\RavenBundle\Exception\OpenSslException
如果在 OpenSSL 中出现问题,则会抛出此异常。
事件
要监听捆绑包发出的事件,创建一个正常的事件订阅者服务
<service id="%my_listener.id%" class="%my_listener.class%">
<tag name="kernel.event_listener" event="%raven_event%" method="%my_listener.method%"/>
</service>
该捆绑包发出以下事件
raven.redirect
Misd\RavenBundle\Event\RedirectEvent
对象包含了当用户被重定向到登录页面时给 Raven 传递的参数。例如,您可以添加 msg
参数。
raven.login
Symfony\Component\Security\Http\Event\InteractiveLoginEvent
对象包含了成功进行 Raven 登录后的请求和认证令牌。