alejandroherr / silex-esngalaxysecurityserviceprovider
Silex 的 ESN Galaxy 安全服务提供商,用于与 ESN Galaxy 进行认证
v0.1
2015-01-27 16:45 UTC
Requires
- php-curl-class/php-curl-class: *
- silex/silex: ~1.1
- symfony/dom-crawler: 2.6.*@dev
- symfony/security: ~2.3
Requires (Dev)
- monolog/monolog: >=1.0.0
This package is not auto-updated.
Last update: 2024-09-28 17:48:59 UTC
README
为 Silex 提供 ESN Galaxy CAS 服务器认证的服务提供程序。通过扩展类的一些 魔法 可以用于与其他 CAS 服务器进行认证。欢迎 fork、编辑等。
警告: 此库仍在开发中。这意味着某些组件可能表现不佳。
安装
{ "require": { "alejandroherr/silex-esngalaxysecurityserviceprovider": "0.1" } }
配置
注释行显示其默认值。只有当您需要时才进行覆盖。
$app->register(new Silex\Provider\SessionServiceProvider()); $app->register(new SecurityServiceProvider()); $app->register(new AlejandroHerr\Silex\EsnGalaxy\EsnGalaxyServiceProvider()); $app['security.firewalls'] = [ 'main' => [ 'esn_galaxy' => array( 'pattern' => '^/.*$', 'anonymous' => true, 'esn_galaxy' => [ 'cas_server' => [ //'base_url' => 'galaxy.esn.org', //'context' => 'cas', //'port' => 443 //'login_path' => '/login', //'validation_path' => '/serviceValidate' ], //'check_path' => '/cas/validation', //'login_path' => '/login', // 'first_login_path' => '/welcome_user' 'auth' => [ //'*' => [ // 'Local.activeMember' => 'ROLE_USER', // 'Local.regularBoardMember' => 'ROLE_BOARD', // ] //] ] ] ], 'logout' => ['logout_path' => '/logout'], //if you want a logout 'users' => $app->share(function() use ($app){ return new Your\UserProvider(); }) ] ]; $app['security.access_rules'] = array( array('^\/(?!login)', 'ROLE_USER'), );
first_login_path
通过添加一个 first_login_path
(实际上它可以是路径或路由),当用户首次登录并创建新用户时,将被重定向到 first_login_path
。
如果您的应用程序是永久的并且您希望他们提供更多信息,或者每次生成用户时都希望给他们一些信息(或只是打个招呼),这将非常有用。
认证
认证选项控制哪些节区的 galaxy-roles 可以访问网站。它是一个具有以下结构的数组
'auth' => [ 'section1' => [ 'galaxy_role1' => 'app_role1', 'galaxy_role2' => 'app_role2', ], 'section2' => [ 'galaxy_role1' => 'app_role1', 'galaxy_role3' => 'app_role2', ] ]
如果节区是 *
表示“任何节区”。记住,它可以是正则表达式。但为了告诉服务提供程序它是一个正则表达式,它必须以 /
开头。
默认配置为
'auth' => [ '*' => [ 'Local.activeMember' => 'ROLE_USER', 'Local.regularBoardMember' => 'ROLE_BOARD', ] ]
示例
仅允许一个国家
'auth' => [ '/^ES/' => [ 'Local.activeMember' => 'ROLE_USER', 'Local.regularBoardMember' => 'ROLE_BOARD', ] ]
仅允许一个国家委员会
'auth' => [ '/^ES/' => [ 'National.regularBoardMember' => 'ROLE_USER', ] ]
登录和验证
您还必须定义登录和验证路径的路线。以下是一些示例
$app->match('/login', function () use ($app){ $errormsg = null; if($app['session']->has(SecurityContextInterface::AUTHENTICATION_ERROR)){ $error = $app['session']->get(SecurityContextInterface::AUTHENTICATION_ERROR); $errormsg = $error->getMessage(); } return $app['twig']->render( 'login.twig', array( 'loginUrl' => $app['jasig_cas_client']->getLoginUrl($app['request']), 'error' => $errormsg ) ); }); $app->match('/validation', function() use ($app){});
许可证
在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE 文件。