From e8881024970864612622a0889c70406c75711a98 Mon Sep 17 00:00:00 2001 From: Nobuo Kihara Date: Fri, 24 Jun 2016 00:06:52 +0900 Subject: [PATCH] docs/guide-ja updated [ci skip] (#11809) --- docs/guide-ja/security-authorization.md | 45 ++++++++++++ docs/guide-ja/start-installation.md | 9 ++- docs/guide-ja/tutorial-shared-hosting.md | 118 +++++++++---------------------- 3 files changed, 87 insertions(+), 85 deletions(-) diff --git a/docs/guide-ja/security-authorization.md b/docs/guide-ja/security-authorization.md index 3f8e9de..12953e7 100644 --- a/docs/guide-ja/security-authorization.md +++ b/docs/guide-ja/security-authorization.md @@ -439,6 +439,51 @@ Jane の場合は、彼女が管理者であるため、少し簡単になりま ![アクセスチェック](images/rbac-access-check-3.png "アクセスチェック") +コントローラ内で権限付与を実装するのには、いくつかの方法があります。 +追加と削除に対するアクセス権を分離する細分化された許可が必要な場合は、それぞれのアクションに対してアクセス権をチェックする必要があります。 +各アクションメソッドの中で上記の条件を使用するか、または [[yii\filters\AccessControl]] を使います。 + +```php +public function behaviors() +{ + return [ + 'access' => [ + 'class' => AccessControl::className(), + 'rules' => [ + [ + 'allow' => true, + 'actions' => ['index'], + 'roles' => ['managePost'], + ], + [ + 'allow' => true, + 'actions' => ['view'], + 'roles' => ['viewPost'], + ], + [ + 'allow' => true, + 'actions' => ['create'], + 'roles' => ['createPost'], + ], + [ + 'allow' => true, + 'actions' => ['update'], + 'roles' => ['updatePost'], + ], + [ + 'allow' => true, + 'actions' => ['delete'], + 'roles' => ['deletePost'], + ], + ], + ], + ]; +} +``` + +全ての CRUD 操作がまとめて管理される場合は、`managePost` のような単一の許可を使い、 +[[yii\web\Controller::beforeAction()]] の中でそれをチェックするのが良いアイデアです。 + ### デフォルトロールを使う デフォルトロールというのは、*全て* のユーザに *黙示的* に割り当てられるロールです。 diff --git a/docs/guide-ja/start-installation.md b/docs/guide-ja/start-installation.md index c33b046..e1589c0 100644 --- a/docs/guide-ja/start-installation.md +++ b/docs/guide-ja/start-installation.md @@ -212,15 +212,20 @@ server { #} #error_page 404 /404.html; + # /assets ディレクトリの php ファイルへのアクセスを拒否する + location ~ ^/assets/.*\.php$ { + deny all; + } + location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_pass 127.0.0.1:9000; + fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; } - location ~ /\.(ht|svn|git) { + location ~* /\. { deny all; } } diff --git a/docs/guide-ja/tutorial-shared-hosting.md b/docs/guide-ja/tutorial-shared-hosting.md index a9b65da..c3d063b 100644 --- a/docs/guide-ja/tutorial-shared-hosting.md +++ b/docs/guide-ja/tutorial-shared-hosting.md @@ -2,17 +2,39 @@ ==================== 共有ホスティング環境では、たいてい、構成やディレクトリ構造について、大きな制約があります。 -それでも、ほとんどの場合、Yii 2.0 を共有ホスティング環境で走らせることは可能です。 +それでも、ほとんどの場合、少し調整をすれば、Yii 2.0 を共有ホスティング環境で走らせることが可能です。 -ベーシックアプリケーションを配備する ------------------------------------- +## ベーシックプロジェクトテンプレートを配備する -通例、一つのウェブルートしかありませんので、ベーシックプロジェクトテンプレートを使用することを推奨します。 -[Yii をインストールする](start-installation.md) の節を参照して、プロジェクトテンプレートをローカル環境にインストールしてください。 +通例、共有ホスティング環境では、一つのウェブルートしかありませんので、可能であればベーシックプロジェクトテンプレートを使用して下さい。 +まず、[Yii をインストールする](start-installation.md) の節を参照して、プロジェクトテンプレートをローカル環境にインストールします。 +そして、ローカル環境でアプリケーションが動くようにした後で、共有ホスティング環境でホスト出来るようにいくつかの修正を行います。 + +### ウェブルートの名前を変える + +FTP またはその他の手段であなたの共有ホストに接続します。おそらく、下記のようなディレクトリが見えるでしょう。 + +``` +config +logs +www +``` + +上記で `www` はウェブサーバのウェブルートディレクトリです。 +別の名前かもしれません。よくある名前は、`www`、`htdocs`、`public_html` です。 + +私たちのベーシックプロジェクトテンプレートではウェブルートの名前は `web` になっています。 +あなたのウェブサーバにアップロードする前に、ローカルのウェブルートの名前をあなたのサーバに適合するように変更します。 +すなわち、`web` から `www` や `public_html` など、何であれ、あなたの共有ホストのウェブルートの名前に変更します。 + +### FTP ルートディレクトリは書き込み可能 + +ルートレベルのディレクトリ、すなわち、`config`、`logs`、`www` があるディレクトリに対して書き込みが出来るのであれば、 +`assets`、`commands` などをそのままルートレベルのディレクトリにアップロードします。 ### ウェブサーバのための追加設定 -使用されているウェブサーバが Apache である場合は、次の内容を持つ `.htaccess` ファイルを `web` (`index.php` があるディレクトリ) に追加する必要があります。 +使用されているウェブサーバが Apache である場合は、次の内容を持つ `.htaccess` ファイルを `web` (または `public_html` など、要するに、`index.php` があるディレクトリ) に追加する必要があります。 ``` Options +FollowSymLinks @@ -30,87 +52,17 @@ RewriteRule . index.php nginx の場合は、追加の構成ファイルは必要がない筈です。 -### ウェブルートの名前を変える - -FTP またはその他の手段であなたの共有ホストに接続したとき、下記のようなディレクトリが見えれば、あなたはきっとラッキーです。 - -``` -config -logs -www -``` - -上記で `www` はウェブサーバのディレクトリルート (すなわち、ウェブルート) です。 -別の名前かもしれません。よくある名前は、`www`、`htdocs`、`public_html` です。 -ベーシックプロジェクトテンプレートではウェブルートの名前は `web` になっていますので、アップロードする前に、これをホストのウェブルートの名前に変更する必要があります。 - -### FTP ルートディレクトリは書き込み可能 - -ルートレベルのディレクトリ、すなわち、`config`、`logs`、`www` があるディレクトリに対して書き込みが出来るのであれば、`assets`、`commands` などをそのままアップロードします。 - ### 必要条件をチェックする -Yii を走らせるためには、ホストは Yii の必要条件を満たさなければなりません。 +Yii を走らせるためには、あなたのウェブサーバは Yii の必要条件を満たさなければなりません。 最低限の必要条件は PHP 5.4 です。 -残りの条件をチェックするために、`requirements.php` をルートディレクトリからウェブルートディレクトリにコピーして、`http://example.com/requirements.php` という URL を使ってブラウザ経由で走らせます。 +必要条件をチェックするために、`requirements.php` をルートディレクトリからウェブルートディレクトリにコピーして、 +`http://example.com/requirements.php` という URL を使ってブラウザ経由で走らせます。 後でファイルを削除するのを忘れないでください。 -アドバンストアプリケーションを配備する --------------------------------------- - -アドバンストアプリケーションを共有ホストに配備するのは、ベーシックアプリケーションを配備するのに比べると、少しトリッキーになります。 -なぜなら、アドバンストアプリケーションは、共有ホストが通常は持っていない二つのウェブルートを持つからです。 -このため、構造を少し修正します。 - -### エントリスクリプトを単一のウェブルートに移動する +## アドバンストプロジェクトテンプレートを配備する -まずは、ウェブルートディレクトリが必要です。 -上記の [ウェブルートの名前を変える](#renaming-webroot) で説明したように、あなたのホストのウェブルートに合うように名前を付けてください。 -次に、以下のような構造を作成します。 - -``` -www - admin -backend -common -console -environments -frontend -... -``` - -`www` がフロントエンドディレクトリになりますので、`frontend/web` の内容をそこに移動します。 -同じように、`backend/web` の内容を `www/admin` に移動します。 -どちらの場合も、`index.php` および `index-test.php` の中のパスを修正する必要があります。 - -### セッションとクッキーを分離する - -元来は、バックエンドとフロントエンドは異なるドメインで走ることを意図されています。 -両方を同じドメインに移動すると、二つが同じクッキーを共有して干渉することになります。 -これを修正するために、バックエンドのアプリケーション構成 `backend/config/main.php` を以下のように修正します。 - -```php -'components' => [ - 'request' => [ - 'csrfParam' => '_backendCSRF', - 'csrfCookie' => [ - 'httpOnly' => true, - 'path' => '/admin', - ], - ], - 'user' => [ - 'identityCookie' => [ - 'name' => '_backendIdentity', - 'path' => '/admin', - 'httpOnly' => true, - ], - ], - 'session' => [ - 'name' => 'BACKENDSESSID', - 'cookieParams' => [ - 'path' => '/admin', - ], - ], -], -``` +アドバンストプロジェクトテンプレートを共有ホストに配備することは、ベーシックプロジェクトテンプレートを配備するのに比べると少しトリッキーにはなりますが、可能です。 +[アドバンストプロジェクトテンプレートのドキュメント](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-ja/topic-shared-hosting.md) +で説明されている指示に従って下さい。