あなたは一例User
と、このテーブルに対応するモデルのために、ユーザー名とパスワードデータを格納するデータベース内のテーブルを持っている必要があります。モデルファイルはデフォルトでprotected/models
に保存されます。
あなたが言及したように、あなたはUserIdentity
クラスに留意しました。それをprotected/components
に入れてください。このメソッドには、プライベート$_id
変数、この変数のgetter、および認証を担当するauthenticate
メソッドが必要です。これを確認してください:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$record=User::model()->findByAttributes(array('username'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id;
$this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
したがって、authenticate
メソッドではどうなりますか? User
テーブルからレコードを検索し、変数に割り当てます。レコードが見つからない場合は、ユーザー名が無効であるというエラーを追加します。 if..elseif..else
の次の要素はパスワードを比較します:DBからのパスワードが入力されたパスワードのmd5関数によってハッシュされたものと等しくない場合、エラーを間違ったパスワードを追加します。 (この場合、md5でハッシュされたパスワードをDBに保存する必要があることを覚えておいてください!)エラーがなければ、ユーザーは正しいデータを入力し、IDとセッション情報を設定できます。
あなたのコードを変更すれば、DBに保存されたデータでauthenticeを使うことができると思います。
こんにちはJebil、あなたはまだ試してみてください。良い答えを得るより良いチャンスは、今のところ、これは懐疑的な答えを生むかもしれません。 – dubes
フォーマットされた投稿+削除ありがとう –
私はmain.phpのデータベース名を変更しました。 protected/configフォルダの下にあります。私は自分のデータベースからユーザー名とパスワードを確認する必要があります。しかし、私はどのように知りません。私はuseridentity.phpファイルで保護されている/コンポーネントのフォルダにする必要があると思う。 – Jebil