2010-11-24 8 views
1

私はsymfony1.4で新しいプロジェクトをやっています。このプロジェクトでは、ユーザーはログインして参照する必要があり、このタイプのプロジェクトでは役割に基づいてユーザーを制限する方法が必要です。 私はこれを明白な方法で実装したくはありません。つまり、ユーザーごとにrole属性を持ち、あらかじめ定義された役割を持ち、これらをユーザーに割り当てることです。この問題は、あとで定義されるロールが増えるほど柔軟性がないということです。ユーザロールを作成する

私はここでEAVモデルを使用していることを考えていました(symfonyでこれを行うことはできません)。あなたが思うように、追加または削除されたときにユーザーの役割をより柔軟にするためのより良い提案がありますか?

また、ユーザーの役割に基づいてページを表示するには、いくつかの要素を役割に応じて非表示にすることをお勧めします。各ページの役割を比較し、すべてのページの要素を非表示にする必要がありますか?より良い解決策はありますか?

これらについては、いくつか明記してください。

おかげ

答えて

2

sfDoctrineGuardプラグイン(http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin)は、ユーザー認証、グループ、および資格情報を扱うかなり包括的な方法です。ユーザーは個別にまたはグループとしてアクセス権を設定でき、特定のページセクションまたはアクション全体へのアクセスは、これらのアクセス許可に基づいて制限できます。コントローラーコード自体に新しいユーザーの資格情報を設定することができます。

<?php 
$this->getUser()->setCredential('editor'); 
?> 

、ユーザーがビュー内の特定の権限を持っていることを確認します。

<?php 
if ($sf_user->hasCredential('editor')) { 
    // stuff only for editors 
} 
?> 

このページでは、Readmeファイルでカバーされていないプラグインに余分な情報がたくさんあります - http://trac.symfony-project.org/wiki/sfGuardPluginExtraDocumentation(それはむしろ推進するために言及しているがDoctrineよりも)。また、短いチュートリアル以下の一連のはかなり便利です:

ユーザーの

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-installation

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-administration

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-securing-actions

とsymfonyのチュートリアルページ:

http://www.symfony-project.org/jobeet/1_4/Doctrine/en/13

+1

はsfDoctrineGuradPluginであることを合意しましたおそらく行く方法。ここでの唯一の問題は、クレデンシャルのキャッシュを激しくすることです。これは修正できます。 –

関連する問題