Nobuo Kihara
10 years ago
10 changed files with 93 additions and 576 deletions
@ -1,92 +0,0 @@
|
||||
認証 |
||||
==== |
||||
|
||||
> Note|注意: この節はまだ執筆中です。 |
||||
|
||||
認証はユーザが誰であるかを確認する行為であり、ログインプロセスの基礎となるものです。 |
||||
典型的には、認証は、識別子 (ユーザ名またはメールアドレス) とパスワードの組み合わせを使用します。 |
||||
ユーザはこれらの値をフォームを通じて送信し、アプリケーションは送信された情報を以前に (例えば、ユーザ登録時に) 保存された情報と比較します。 |
||||
|
||||
Yii では、このプロセス全体が半自動的に実行されます。 |
||||
開発者に残されているのは、認証システムにおいて最も重要なクラスである [[yii\web\IdentityInterface]] を実装することだけです。 |
||||
典型的には、`IdentityInterface` の実装は `User` モデルを使って達成されます。 |
||||
|
||||
十分な機能を有する認証の実例を [アドバンストアプリケーションテンプレート](tutorial-advanced-app.md) の中に見出すことが出来ます。 |
||||
下記にインターフェイスのメソッドだけをリストします。 |
||||
|
||||
```php |
||||
class User extends ActiveRecord implements IdentityInterface |
||||
{ |
||||
// ... |
||||
|
||||
/** |
||||
* 与えられた ID によってユーザ識別情報を探す |
||||
* |
||||
* @param string|integer $id 探すための ID |
||||
* @return IdentityInterface|null 与えられた ID に合致する Identity オブジェクト |
||||
*/ |
||||
public static function findIdentity($id) |
||||
{ |
||||
return static::findOne($id); |
||||
} |
||||
|
||||
/** |
||||
* 与えられたトークンによってユーザ識別情報を探す |
||||
* |
||||
* @param string $token 探すためのトークン |
||||
* @return IdentityInterface|null 与えられたトークンに合致する Identity オブジェクト |
||||
*/ |
||||
public static function findIdentityByAccessToken($token, $type = null) |
||||
{ |
||||
return static::findOne(['access_token' => $token]); |
||||
} |
||||
|
||||
/** |
||||
* @return int|string 現在のユーザの ID |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
/** |
||||
* @return string 現在のユーザの認証キー |
||||
*/ |
||||
public function getAuthKey() |
||||
{ |
||||
return $this->auth_key; |
||||
} |
||||
|
||||
/** |
||||
* @param string $authKey |
||||
* @return boolean 認証キーが現在のユーザに対して有効か否か |
||||
*/ |
||||
public function validateAuthKey($authKey) |
||||
{ |
||||
return $this->getAuthKey() === $authKey; |
||||
} |
||||
} |
||||
``` |
||||
|
||||
概要を述べたメソッドのうち、二つは単純なものです。 |
||||
`findIdentity` は ID の値を受け取って、その ID と関連付けられたモデルのインスタンスを返します。 |
||||
`getId` メソッドは ID そのものを返します。 |
||||
その他のメソッドのうち、二つのもの - `getAuthKey` と `validateAuthKey` - は、「次回から自動ログイン ("remember me")」のクッキーに対して追加のセキュリティを提供するために使われます。 |
||||
`getAuthKey` メソッドは全てのユーザに対してユニークな文字列を返さなければなりません。 |
||||
`Yii::$app->getSecurity()->generateRandomString()` を使うと、信頼性の高い方法でユニークな文字列を生成することが出来ます。 |
||||
これをユーザのレコードの一部として保存しておくのは良いアイデアです。 |
||||
|
||||
```php |
||||
public function beforeSave($insert) |
||||
{ |
||||
if (parent::beforeSave($insert)) { |
||||
if ($this->isNewRecord) { |
||||
$this->auth_key = Yii::$app->getSecurity()->generateRandomString(); |
||||
} |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
``` |
||||
|
||||
`validateAuthKey` メソッドでは、パラメータとして渡された `$authKey` 変数 (これ自体はクッキーから読み出されます) をデータベースから読み出された値と比較する必要があるだけです。 |
@ -1,68 +0,0 @@
|
||||
Bootstrap ウィジェット |
||||
====================== |
||||
|
||||
> Note|注意: この節はまだ執筆中です。 |
||||
|
||||
Yii は、追加設定なしで、マークアップとコンポーネントのフレームワーク [Bootstrap 3](http://getbootstrap.com/) ("Twitter Bootstrap" としても知られています) をサポートしています。 |
||||
Bootstrap は優れた、レスポンシブなフレームワークであり、クライアント側の開発プロセスを大いにスピードアップすることが出来るものです。 |
||||
|
||||
Bootstrap のコアは二つの部分によって表されます。 |
||||
|
||||
- CSS の基礎。例えば、グリッドのレイアウトシステム、タイポグラフィ、ヘルパクラス、レスポンシブユーティリティなど。 |
||||
- そのまま使えるコンポーネント。フォーム、メニュー、ページネーション、モーダルボックス、タブなど。 |
||||
|
||||
基礎 |
||||
---- |
||||
|
||||
Yii は bootstrap の基礎を PHP コードでラップすることをしていません。 |
||||
なぜなら、この場合の HTML コードがそれ自体として非常にシンプルだからです。 |
||||
bootstrap の基礎を使用することに関する詳細は、[bootstrap ドキュメントウェブサイト](http://getbootstrap.com/css/) で見ることが出来ます。 |
||||
それでも、Yii はあなたのページに bootstrap のアセットをインクルードするための便利な方法を提供しています。 |
||||
`@app/assets` ディレクトリに配置されている `AppAsset.php` に一行を加えるだけで大丈夫です。 |
||||
|
||||
```php |
||||
public $depends = [ |
||||
'yii\web\YiiAsset', |
||||
'yii\bootstrap\BootstrapAsset', // この行です |
||||
]; |
||||
``` |
||||
|
||||
Yii のアセットマネージャによって bootstrap を使うと、bootstrap のリソースを最小化したり、必要な場合にはあなた自身のリソースと結合したりすることが出来ます。 |
||||
|
||||
Yii ウィジェット |
||||
---------------- |
||||
|
||||
複雑な bootstrap コンポーネントのほとんどは Yii ウィジェットでラップされて、より堅牢な構文を与えられ、フレームワークの諸機能と統合されています。 |
||||
全てのウィジェットは `\yii\bootstrap` 名前空間に属します。 |
||||
|
||||
- [[yii\bootstrap\ActiveForm|ActiveForm]] |
||||
- [[yii\bootstrap\Alert|Alert]] |
||||
- [[yii\bootstrap\Button|Button]] |
||||
- [[yii\bootstrap\ButtonDropdown|ButtonDropdown]] |
||||
- [[yii\bootstrap\ButtonGroup|ButtonGroup]] |
||||
- [[yii\bootstrap\Carousel|Carousel]] |
||||
- [[yii\bootstrap\Collapse|Collapse]] |
||||
- [[yii\bootstrap\Dropdown|Dropdown]] |
||||
- [[yii\bootstrap\Modal|Modal]] |
||||
- [[yii\bootstrap\Nav|Nav]] |
||||
- [[yii\bootstrap\NavBar|NavBar]] |
||||
- [[yii\bootstrap\Progress|Progress]] |
||||
- [[yii\bootstrap\Tabs|Tabs]] |
||||
|
||||
|
||||
Bootstrap の .less ファイルを直接に使用する |
||||
------------------------------------------- |
||||
|
||||
あなたが [Bootstrap CSS をあなたの less ファイルに直接含める](http://getbootstrap.com/getting-started/#customizing) ことを望む場合は、オリジナルの CSS ファイルがロードされないように無効化する必要があるでしょう。 |
||||
[[yii\bootstrap\BootstrapAsset|BootstrapAsset]] の `css` プロパティを空に設定することによって、そうすることが出来ます。 |
||||
そのためには、`assetManager` [アプリケーションコンポーネント](structure-application-components.md) を以下のように構成します。 |
||||
|
||||
```php |
||||
'assetManager' => [ |
||||
'bundles' => [ |
||||
'yii\bootstrap\BootstrapAsset' => [ |
||||
'css' => [], |
||||
] |
||||
] |
||||
] |
||||
``` |
Loading…
Reference in new issue