alejandroherr/silex-esngalaxysecurityserviceprovider

Silex 的 ESN Galaxy 安全服务提供商,用于与 ESN Galaxy 进行认证

v0.1 2015-01-27 16:45 UTC

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 文件。

代码硬,派对更疯狂