Download the PHP package crocos/security-bundle without Composer

On this page you can find all versions of the php package crocos/security-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package security-bundle

CrocosSecurityBundle - README

Build Status:

概要

CrocosSecurityBundle はよりシンプルに認証状態の管理を行うためにのSymfony用のバンドルで、複雑な SecurityBundle を置き換えるために開発されました。SecurityBundle と比べ、次のような違いがあります。

Symfony 2.0 を利用している方

CrocosSecurityBundle1.* バージョンを使ってください。

インストール方法

Composerを使ったインストール

crocos/security-bundlecomposer.json に追加します。

app/AppKernel.php

CrocosSecurityBundle を登録します。

Symfony\Bundle\SecurityBundle\SecurityBundle の行は削除します。

app/config/config.yml

security.yml を読み込んでいる行は削除します。

イントロダクション

Secure アノテーション、SecureConfig アノテーションをコントローラのメソッドもしくはクラスに設定します。

アノテーション

Secure アノテーション

Secure アノテーションを付与したコントローラは認証が必要として扱います。クラスに設定した場合はすべてのアクションに、メソッドに設定した場合は指定したアクションのみが対象です。

Secure アノテーションは次の属性が設定可能です。

disabled

trueに設定した場合、認証不要であることを表します。初期値はfalseなので、引数なしで Secure アノテーションを設定した場合は認証が必要になります。

allow

必要な権限を配列で設定します。

SecureConfig アノテーション

SecureConfig アノテーションは認証に関する設定を行います。Secure アノテーションと同様に、コントローラのクラスやメソッドに対して設定します。

SecureConfig アノテーションは次の属性が設定可能です。

domain

同一プロジェクト内で異なる認証処理を行わなければならない場合(ユーザ専用ページ、管理者専用ページなど)、認証状況が適応される領域を指定したい場合に指定します。

デフォルトではセッションを用いて認証状態を保持しますが、domainはセッションの名前空間として利用されます。

auth

認証状態の管理方法を指定します。初期値は "session" で、セッションを用いて認証状態の管理を行います。 独自の管理方法を設定することもできます。

forward

非ログイン状態で認証が必要なコントローラにアクセスした場合、ここに指定したコントローラが呼び出されます。コントローラのメソッド名(クラス::メソッド)を指定するか、Symfonyの短縮形式(バンドル名:コントローラ名:アクション名)でも指定できます。 forward が指定されていない場合に認証が必要なコントローラにアクセスした場合はエラーになります。

forwardに指定したコントローラへのアクセスは、無限ループを防ぐため、認証が必須と設定されている場合であっても制御は行いません。

basic

BASIC認証を有効にします。値には「ユーザ名:パスワード」形式の文字列、もしくはその文字列の配列(= 複数ユーザ)を指定します。

認証領域(realm)は domain の値を元に設定されます。"secured" の場合は "Secured Area" となります。

アノテーションの読み込み

Secure アノテーションがクラスに設定されている場合はすべてのアクションに同じ内容が適応されます。親クラスに設定されている値も読み込まれます。次の順番で読み込まれ、あとに読み込まれた値で上書きされます。

  1. 親クラス
  2. 子クラス
  3. メソッド

disabled 属性を指定しなかった場合は認証が必要として上書きされますが、その他の属性は指定しない限り上書きされません。メソッドのアノテーションが読み込まれた段階で指定されていない場合のみ、デフォルト値が設定されます。

roleManager

権限の管理方法を指定します。初期値は "session" で、セッションを用いて認証状態の管理を行います。

"in_memory" を指定すると、権限を設定したプロセス中のみ保持され、プロセスが終了すると破棄されるようになります。

httpsRequired

true を指定したコントローラに http でアクセスした場合、強制的に https にリダイレクトします。

なお、開発用サーバなどでSSL通信設定を行っていない環境では、 app/config/config_dev.yml などに https_requiring: false を設定することで、httpsへの強制リダイレクトを無効にできます。 (デフォルでは有効になっています)

サンプルコード

次のコードはアノテーションを用いて認証を行うサンプルコードです。

CrocosSecurityBundle を使用する際は、設定をしやすくするためにアプリケーションごとに共通のコントローラクラスを作成することを推奨します。

基本的なサンプル

AppController を継承した ProductControllerAccountController が定義されています。ProductControllerbuyAction には Secure アノテーションが指定されているので認証が必要となります。 AccountController はクラスに Secure アノテーションが指定してあるため、すべてのアクションで認証が必要です。ただし、AppControllerSecureConfig アノテーションで loginAction が forward に指定されているため、loginAction は常に認証が不要になります。

管理者用ページ向けのサンプル

管理者用のコントローラを作る場合、次のように domain 属性を指定して、別の認証領域とします。AppControllerSecure アノテーションが指定されているため、すべてのコントローラで認証が必要となります。

Basic認証を設定する

Basic認証を設定するには SecureConfig アノテーションに basic 属性を指定します。この例ではユーザ名に "admin" 、パスワードに "password" を設定しています。

なおBasic認証の設定は Secure アノテーションの設定とは関連せず、 basic 属性が設定されている場合は認証領域内のすべてのアクションでBasic認証が行われます。部分的にBasic認証を無効にしたい場合は basic 属性の false を設定します。もちろん authforward 属性などを設定することでPHP側での認証も設定可能です。

また、ユーザ名/パスワードはパラメータ形式で指定することも可能です。

app/config/parameters.yml:

SecurityContext

認証に関わる状態は crocos_security.context というキーでサービスコンテナに登録されている、 Crocos\SecurityBundle\Security\SecurityContext オブジェクトが保持しています。なお実際の処理内容については後述する Auth Logic によって変更可能です。

ログイン

ログインを行うには、login() メソッドにユーザ情報を渡します。

ログイン状態の確認

ログイン状態の確認は、isAuthenticated() メソッドにて行います。

ログインしているユーザの取得

ログインしているユーザの取得は、getUser() メソッドにて行います。ログインしていない場合は null が返されます。

ログアウト

ログアウトは、logout() メソッドで行えます。

Auth Logic

Auth Logic は認証状態の管理方法を切り替える仕組みです。Secure アノテーションの auth と対応しています。標準では、セッションを用いて認証状態の管理を行う SessionAuth (auth="session")、セッションにエンティティを格納することを考慮した SessionEntityAuth があります。また、既存の Auth Logic を拡張したり、独自に作成することも可能です。

SessionAuth

SessionAuth はセッションを用いて認証状態を管理する仕組みです。

SessionEntityAuth

SessionEntityAuth はログインユーザにエンティティが使用されることを想定したもので、基本的には SessionAuth と同等です。SessionAuth を用いた場合、ログイン中のユーザ情報はセッションにシリアライズして格納されます。ユーザ情報がオブジェクトの場合、オブジェクトがシリアライズされて保存されます。SessionEntityAuth を用いた場合、クラス名とIDのみをセッションへ格納し、アクセスがあるたびにリポジトリからエンティティを取得します。

SessionEntityAuth を用いるにあたって、ログイン対象のエンティティには必ず getId() メソッドを実装する必要があります。この値はセッションからエンティティを復元する際、リポジトリの find() メソッドに渡されます。また、ログイン中のユーザの有効性を確認したい場合、エンティティに isEnabled() メソッドを実装することで、エンティティ取得後に有効性の確認が可能です。ログインしていても isEnabled()false であれば、ログアウトされます。

カスタムAuth Logic

独自の Auth Logic を作成するにはまず、 Crocos\SecurityBundle\Security\AuthLogic\AuthLogicInterface インターフェイスを実装したクラスを作成します。Auth Logic には次の5つのメソッドを定義する必要があります。

setDomain() メソッド以外は SecurityContext クラスから委譲される形で呼び出されます。setDomain() メソッドはアノテーションで読み込まれた domain の値が渡されます。

カスタムAuth Logicの登録

Auth Logic を作成したら、DIコンテナに登録する必要があります。その際、crocos_security.auth_logic タグを付与することで CrocosSecurityBundle に登録可能です。アノテーションには alias に記述した値を指定します。

上記のAuth Logicを呼び出す場合は次のようになります。

AuthException

任意の場所でログイン画面に遷移したい場合は、 Crocos\SecurityBundle\Exception\AuthException オブジェクトをスローします。なお、 AuthException のコンストラクタの第2引数に attributes 配列を指定でき、ログイン画面へ遷移する際にルーティングのパラメータとして渡されます。

Twig連携

CrocosSecurityBundleを読み込むとTwigテンプレート内で _security 変数が有効になります。_security 変数は SecurityContext オブジェクトへの参照を持ちます。これを用いてテンプレート内で条件分岐などを行えます。


All versions of security-bundle with dependencies

PHP Build Version
Package Version
Requires php Version >=5.4.0
symfony/framework-bundle Version >=2.1.0@dev
symfony/http-foundation Version >=2.1.0@dev
doctrine/common Version >=2.2.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package crocos/security-bundle contains the following files

Loading the files please wait ....