Commit 01850733 by Nobuo Kihara

docs/guide-ja/structure-filters.md - completed [ci skip]

parent 7dd5ac08
...@@ -105,14 +105,13 @@ Yii 縺ッ繧医¥菴ソ繧上l繧倶ク騾」縺ョ繝輔ぅ繝ォ繧ソ繧呈署萓帙@縺ヲ縺翫j縲√◎繧後i ...@@ -105,14 +105,13 @@ Yii 縺ッ繧医¥菴ソ繧上l繧倶ク騾」縺ョ繝輔ぅ繝ォ繧ソ繧呈署萓帙@縺ヲ縺翫j縲√◎繧後i
### [[yii\filters\AccessControl|AccessControl]] <a name="access-control"></a> ### [[yii\filters\AccessControl|AccessControl]] <a name="access-control"></a>
AccessControl provides simple access control based on a set of [[yii\filters\AccessControl::rules|rules]]. AccessControl は、一組の [[yii\filters\AccessControl::rules|規則]] に基づいて、シンプルなアクセスコントロールを提供するものです。
In particular, before an action is executed, AccessControl will examine the listed rules and find the first one 具体的に言うと、アクションが実行される前に、AccessControl はリストされた規則を調べて、現在のコンテキスト変数 (例えば、ユーザの IP アドレスや、ユーザのログイン状態など) に最初に合致するものを見つけます。
that matches the current context variables (such as user IP address, user login status, etc.) The matching そして、合致した規則によって、リクエストされたアクションの実行を許可するか拒否するかを決定します。
rule will dictate whether to allow or deny the execution of the requested action. If no rule matches, the access 合致する規則がなかった場合は、アクセスは拒否されます。
will be denied.
The following example shows how to allow authenticated users to access the `create` and `update` actions 次の例は、認証されたユーザに対しては `create``update` のアクションへのアクセスを許可し、
while denying all other users from accessing these two actions. その他のすべてのユーザにはこれら二つのアクションに対するアクセスを拒否する仕方を示すものです。
```php ```php
use yii\filters\AccessControl; use yii\filters\AccessControl;
...@@ -124,31 +123,31 @@ public function behaviors() ...@@ -124,31 +123,31 @@ public function behaviors()
'class' => AccessControl::className(), 'class' => AccessControl::className(),
'only' => ['create', 'update'], 'only' => ['create', 'update'],
'rules' => [ 'rules' => [
// allow authenticated users // 認証されたユーザに許可する
[ [
'allow' => true, 'allow' => true,
'roles' => ['@'], 'roles' => ['@'],
], ],
// everything else is denied by default // その他は、既定により拒否される
], ],
], ],
]; ];
} }
``` ```
For more details about access control in general, please refer to the [Authorization](security-authorization.md) section. アクセスコントロール一般について、更なる詳細は [権限](security-authorization.md) の節を参照してください。
### Authentication Method Filters <a name="auth-method-filters"></a> ### 認証メソッドフィルタ <a name="auth-method-filters"></a>
Authentication method filters are used to authenticate a user based using various methods, such as 認証メソッドフィルタは、[HTTP Basic 認証](http://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC)
[HTTP Basic Auth](http://en.wikipedia.org/wiki/Basic_access_authentication), [OAuth 2](http://oauth.net/2/). [OAuth 2](http://oauth.net/2/) など、様々なメソッドを使ってユーザを認証するために使われるものです。
These filter classes are all under the `yii\filters\auth` namespace. これらのフィルタクラスはすべて `yii\filters\auth` 名前空間の下にあります。
The following example shows how you can use [[yii\filters\auth\HttpBasicAuth]] to authenticate a user using 次の例は、[[yii\filters\auth\HttpBasicAuth]] の使い方を示すもので、HTTP Basic 認証に基づくアクセストークンを使ってユーザを認証しています。
an access token based on HTTP Basic Auth method. Note that in order for this to work, your これを動作させるためには、あなたの [[yii\web\User::identityClass|ユーザアイデンティティクラス]] が
[[yii\web\User::identityClass|user identity class]] must implement the [[yii\web\IdentityInterface::findIdentityByAccessToken()|findIdentityByAccessToken()]] [[yii\web\IdentityInterface::findIdentityByAccessToken()|findIdentityByAccessToken()]]
method. メソッドを実装していなければならないことに注意してください。
```php ```php
use yii\filters\auth\HttpBasicAuth; use yii\filters\auth\HttpBasicAuth;
...@@ -163,17 +162,18 @@ public function behaviors() ...@@ -163,17 +162,18 @@ public function behaviors()
} }
``` ```
Authentication method filters are commonly used in implementing RESTful APIs. For more details, please refer to the 認証メソッドフィルタは RESTful API を実装するときに使われるのが通例です。詳細については、
RESTful [Authentication](rest-authentication.md) section. RESTful [認証](rest-authentication.md) の節を参照してください。
### [[yii\filters\ContentNegotiator|ContentNegotiator]] <a name="content-negotiator"></a> ### [[yii\filters\ContentNegotiator|ContentNegotiator]] <a name="content-negotiator"></a>
ContentNegotiator supports response format negotiation and application language negotiation. It will try to ContentNegotiator は、レスポンス形式のネゴシエーションとアプリケーション言語のネゴシエーションをサポートします。
determine the response format and/or language by examining `GET` parameters and `Accept` HTTP header. このフィルタは `GET` パラメータと `Accept` HTTP ヘッダを調べることによって、レスポンス形式 および/または
言語を決定しようとします。
In the following example, ContentNegotiator is configured to support JSON and XML response formats, and 次の例では、ContentNegotiator はレスポンス形式として JSON と XML をサポートし、(合衆国の)英語とドイツ語を
English (United States) and German languages. 言語としてサポートするように構成されています。
```php ```php
use yii\filters\ContentNegotiator; use yii\filters\ContentNegotiator;
...@@ -197,11 +197,10 @@ public function behaviors() ...@@ -197,11 +197,10 @@ public function behaviors()
} }
``` ```
Response formats and languages often need to be determined much earlier during レスポンス形式と言語は [アプリケーションのライフサイクル](structure-applications.md#application-lifecycle)
the [application lifecycle](structure-applications.md#application-lifecycle). For this reason, ContentNegotiator のもっと早い段階で決定される必要があることがよくあります。このため、ContentNegotiator はフィルタの他に、
is designed in a way such that it can also be used as a [bootstrapping component](structure-applications.md#bootstrap) [ブートストラップコンポーネント](structure-applications.md#bootstrap) としても使うことができるように設計されています。
besides filter. For example, you may configure it in the [application configuration](structure-applications.md#application-configurations) 例えば、次のように、ContentNegotiator を [アプリケーションのコンフィギュレーション](structure-applications.md#application-configurations) の中で構成することが出来ます。
like the following:
```php ```php
use yii\filters\ContentNegotiator; use yii\filters\ContentNegotiator;
...@@ -224,15 +223,14 @@ use yii\web\Response; ...@@ -224,15 +223,14 @@ use yii\web\Response;
]; ];
``` ```
> Info: In case the preferred content type and language cannot be determined from a request, the first format and > Info|情報: 望ましいコンテントタイプと言語がリクエストからは決定できない場合は、[[formats]] および [[languages]]
language listed in [[formats]] and [[languages]] will be used. に挙げられている最初の形式と言語が使用されます。
### [[yii\filters\HttpCache|HttpCache]] <a name="http-cache"></a> ### [[yii\filters\HttpCache|HttpCache]] <a name="http-cache"></a>
HttpCache implements client-side caching by utilizing the `Last-Modified` and `Etag` HTTP headers. HttpCache は `Last-Modified` および `Etag` の HTTP ヘッダを利用して、クライアントサイドのキャッシュを実装するものです。
For example,
```php ```php
use yii\filters\HttpCache; use yii\filters\HttpCache;
...@@ -252,14 +250,15 @@ public function behaviors() ...@@ -252,14 +250,15 @@ public function behaviors()
} }
``` ```
Please refer to the [HTTP Caching](caching-http.md) section for more details about using HttpCache. HttpCache に関する更なる詳細は [HTTP キャッシュ](caching-http.md) の節を参照してください。
### [[yii\filters\PageCache|PageCache]] <a name="page-cache"></a> ### [[yii\filters\PageCache|PageCache]] <a name="page-cache"></a>
PageCache implements server-side caching of whole pages. In the following example, PageCache is applied PageCache はサーバサイドにおけるページ全体のキャッシュを実装するものです。次の例では、PageCache が
to the `index` action to cache the whole page for maximum 60 seconds or until the count of entries in the `post` `index` アクションに適用されて、最大 60 秒間、または、`post` テーブルのエントリ数が変化するまでの間、
table changes. It also stores different versions of the page depending on the chosen application language. ページ全体をキャッシュしています。さらに、このページキャッシュは、選択されたアプリケーションの言語に従って、
違うバージョンのページを保存するようにしています。
```php ```php
use yii\filters\PageCache; use yii\filters\PageCache;
...@@ -284,21 +283,21 @@ public function behaviors() ...@@ -284,21 +283,21 @@ public function behaviors()
} }
``` ```
Please refer to the [Page Caching](caching-page.md) section for more details about using PageCache. PageCache の使用に関する更なる詳細は [ページキャッシュ](caching-page.md) の節を参照してください。
### [[yii\filters\RateLimiter|RateLimiter]] <a name="rate-limiter"></a> ### [[yii\filters\RateLimiter|RateLimiter]] <a name="rate-limiter"></a>
RateLimiter implements a rate limiting algorithm based on the [leaky bucket algorithm](http://en.wikipedia.org/wiki/Leaky_bucket). RateLimiter [リーキーバケットアルゴリズム](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%82%AD%E3%83%BC%E3%83%90%E3%82%B1%E3%83%83%E3%83%88)
It is primarily used in implementing RESTful APIs. Please refer to the [Rate Limiting](rest-rate-limiting.md) section に基づいて転送レート制限のアルゴリズムを実装するものです。主として RESTful API を実装するときに使用されます。
for details about using this filter. このフィルタの使用に関する詳細は [転送レート制限](rest-rate-limiting.md) の節を参照してください。
### [[yii\filters\VerbFilter|VerbFilter]] <a name="verb-filter"></a> ### [[yii\filters\VerbFilter|VerbFilter]] <a name="verb-filter"></a>
VerbFilter checks if the HTTP request methods are allowed by the requested actions. If not allowed, it will VerbFilter は、HTTP リクエストメソッドがリクエストされたアクションによって許可されているかどうかをチェックするものです。
throw an HTTP 405 exception. In the following example, VerbFilter is declared to specify a typical set of allowed 許可されていない場合は、HTTP 405 例外を投げます。次の例では、VerbFilter が宣言されて、
request methods for CRUD actions. CRUD アクションに対して許可されるメソッドの典型的なセットを規定しています。
```php ```php
use yii\filters\VerbFilter; use yii\filters\VerbFilter;
...@@ -322,14 +321,15 @@ public function behaviors() ...@@ -322,14 +321,15 @@ public function behaviors()
### [[yii\filters\Cors|Cors]] <a name="cors"></a> ### [[yii\filters\Cors|Cors]] <a name="cors"></a>
Cross-origin resource sharing [CORS](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) is a mechanism that allows many resources (e.g. fonts, JavaScript, etc.) クロスオリジンリソース共有 [CORS](https://developer.mozilla.org/ja/docs/HTTP_access_control) とは、
on a Web page to be requested from another domain outside the domain the resource originated from. ウェブページにおいて、さまざまなリソース (例えば、フォントや JavaScript など) を、
In particular, JavaScript's AJAX calls can use the XMLHttpRequest mechanism. Such "cross-domain" requests would それを生成するドメイン以外のドメインからリクエストすることを可能にするメカニズムです。
otherwise be forbidden by Web browsers, per the same origin security policy. 特に言えば、JavaScript の AJAX 呼出しが使用することが出来る XMLHttpRequest メカニズムです。
CORS defines a way in which the browser and the server can interact to determine whether or not to allow the cross-origin request. このような「クロスドメイン」のリクエストは、このメカニズムに拠らなければ、
同一生成元のセキュリティポリシーによって、ウェブブラウザから禁止されるはずのものです。
CORS は、ブラウザとサーバが交信して、クロスドメインのリクエストを許可するか否かを決定する方法を定義するものです。
The [[yii\filters\Cors|Cors filter]] should be defined before Authentication / Authorization filters to make sure the CORS headers [[yii\filters\Cors|Cors フィルタ]] は、CORS ヘッダが常に送信されることを保証するために、Authentication / Authorization のフィルタよりも前に定義されなければなりません。
will always be sent.
```php ```php
use yii\filters\Cors; use yii\filters\Cors;
...@@ -345,15 +345,16 @@ public function behaviors() ...@@ -345,15 +345,16 @@ public function behaviors()
} }
``` ```
The Cors filtering could be tuned using the `cors` property. Cors のフィルタリングは `cors` プロパティを使ってチューニングすることが出来ます。
* `cors['Origin']`: array used to define allowed origins. Can be `['*']` (everyone) or `['http://www.myserver.net', 'http://www.myotherserver.com']`. Default to `['*']`. * `cors['Origin']`: 許可される生成元を定義するのに使われる配列。`['*']` (すべて) または `['http://www.myserver.net'、'http://www.myotherserver.com']` などが設定可能。デフォルトは `['*']`
* `cors['Access-Control-Request-Method']`: array of allowed verbs like `['GET', 'OPTIONS', 'HEAD']`. Default to `['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']`. * `cors['Access-Control-Request-Method']`: 許可されるメソッドの配列。たとえば、`['GET', 'OPTIONS', 'HEAD']`。デフォルトは `['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']`
* `cors['Access-Control-Request-Headers']`: array of allowed headers. Can be `['*']` all headers or specific ones `['X-Request-With']`. Default to `['*']`. * `cors['Access-Control-Request-Headers']`: 許可されるヘッダの配列。全てのヘッダを意味する `['*']` または特定のヘッダを示す `['X-Request-With']` が設定可能。デフォルトは `['*']`
* `cors['Access-Control-Allow-Credentials']`: define if current request can be made using credentials. Can be `true`, `false` or `null` (not set). Default to `null`. * `cors['Access-Control-Allow-Credentials']`: 現在のリクエストをクレデンシャルを使ってすることが出来るかどうかを定義。
* `cors['Access-Control-Max-Age']`: define lifetime of pre-flight request. Default to `86400`. `true``false` または `null` (設定なし) が設定可能。デフォルトは `null`
* `cors['Access-Control-Max-Age']`: プリフライトリクエストの寿命を定義。デフォルトは `86400`
For example, allowing CORS for origin : `http://www.myserver.net` with method `GET`, `HEAD` and `OPTIONS` : 次の例は、生成元 `http://www.myserver.net` に対する `GET``HEAD` および `OPTIONS` のメソッドによる CORS を許可するものです:
```php ```php
use yii\filters\Cors; use yii\filters\Cors;
...@@ -373,8 +374,8 @@ public function behaviors() ...@@ -373,8 +374,8 @@ public function behaviors()
} }
``` ```
You may tune the CORS headers by overriding default parameters on a per action basis. デフォルトのパラメータをアクション単位でオーバーライドして CORS ヘッダをチューニングすることも可能です。
For example adding the `Access-Control-Allow-Credentials` for the `login` action could be done like this : 例えば、`login` アクションに `Access-Control-Allow-Credentials` を追加することは、次のようにすれば出来ます:
```php ```php
use yii\filters\Cors; use yii\filters\Cors;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment