基本的に、ユーザーがメールアドレスとパスワードを使用してログインできるようにしたいのですが、Users テーブルの主キーとして自動インクリメント ID を使用します。
一部のチュートリアルは、これが非常に簡単であることを示しているようです。しかし、それは私にはうまくいかないようです。まず、認証識別子として「メール」を使用するように User モデルを変更する必要がありました。これは機能しますが、セッションは保存されません (以下を参照)。
ユーザー テーブル移行ファイル。
Schema::create("users", function ($table) {
$table->increments("id");
$table->string("email", 255)->unique();
$table->string("password", 60);
$table->timestamps();
});
ユーザー モデル ファイル。
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
protected $table = 'users';
protected $hidden = array('password');
public function getAuthIdentifier() {
return $this->email;
}
public function getAuthPassword() {
return $this->password;
}
public function getReminderEmail() {
return $this->email;
}
}
でログインします。
Auth::attempt(array("email" => Input::get("email"), "password" => Input::get("password")), true);
...動作します(trueを返すように)。ただし、セッションは正しく保存されません。後続の要求は認証されません。さまざまなセッション ドライバーを試しましたが、成功しませんでした。
私が追加する場合;
protected $primaryKey = "email";
User モデルに対して、セッションは機能します。「 email」はそのテーブルの主キーではなく、「id」はそうです(そして、「id」を主キーとして保持したいと思います)。
また、公式ドキュメントでは、ここでは「email」が使用されているため、「email」を識別列として使用するために特別なことをする必要はないと示されているようですが、ここでは数値 ID が使用されています。ここで明らかな何かが欠けていますか?