忍者ブログ

STEP UP BLOG

Home > ブログ > 記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Laravel4.2での認証の切り替え(続編)

Laravel4.2での認証の切り替え

http://capella.3rin.net/Entry/25/

の続きです。
前回の実装では、片方でログインした場合、
条件によってはもう片方にもログインしていることが判明しました。
これはまずい。。。
原因はログインに用いられるセッションが同一ということらしいです。
というわけでセッションも切り分ければいいはずなので、
そのへんの設定を教えてもらいましたm(_ _)m
public/index.php内で特定のリクエストのみ
Config::set('session.cookie', 'alternative_laravel_session');
Config::set('auth.model', 'AlternativeModel');
$auth = Auth::createEloquentDriver();
Auth::setProvider($auth->getProvider());

とすれば大丈夫。
なるほど、cookieの名前を変えるんですね。
Laravelマスターへの道は険しい。。。
PR

Laravel4.2での認証の切り替え

Laravelをそのまま使おうとすると、
認証でひとつのテーブルしか設定することができず、
例えばURLによって認証に用いるモデルを切り替えるとかできません。

そこでいくつかの方法が考えられており、そのひとつが以下のパッケージを使うこと。

https://github.com/ollieread/multiauth/

ここまで大袈裟なのは要らないというなら、
認証モデルの切り替えが必要なコントローラなどで、
Config::set('auth.model', 'AlternativeModel');
$auth = Auth::createEloquentDriver();
Auth::setProvider($auth->getProvider());

としてapp/config/auth.phpの内容を書き換えるのも手です。

このような認証の切り替えはよくあることなので、
Laravel本体だけでなんとかしてほしいものですね。。

Laravel5については以下が参考になります。

http://qiita.com/zaburo/items/bc699185b6de12c0413d

LaravelでのCSRFフィルターとトークン

http://laravel.com/docs/4.2/html#csrf-protection

LaravelではCSRFフィルターを通すとトークンチェックが行われます。
フォームで送信されたトークンが正しいかチェックするというものです。
普通にForm::open()をするとトークンは自動的にhiddenのinputタグで埋め込まれるのですが、
AjaxでPOST送信などするときに、何も考えずに送信するとTokenMismatchExceptionが発生します。
そんなときはForm::token()でトークンを明示的に追加することで回避できます。

シンプルなAjaxライブラリとしてのSuperAgent

jQueryがどうしても必要なシーンというのは少なくなってきています。
フロントエンドの流行としては、
直接DOMを操作するのは汚いこととなってきて、
Virtual DOMを操作するのが流行っています。
Reactとかそうですね。

http://facebook.github.io/react/

そうすると、もうjQueryの出番なんてAjaxぐらいしかありません。
しかし、AjaxのためだけにjQueryを読み込むのは大袈裟すぎますよね。
というわけで、シンプルなAjaxライブラリはないかと調べて見つけたのがSuperAgentです。

https://github.com/visionmedia/superagent

こちら、Node.jsでも使えます。
npmでインストールして、読み込みには以前の記事でも紹介したGulpを使います。
var request = require('superagent');

これで使う準備は出来ました。
まずはGETです。
request
  .get('http://hogefoo')
  .end(function(err, res) {
    // なにか処理
  });

メソッドチェーンで処理を繋げていく記述ですね。
次はPOST。
request
  .post('http://hogefoo')
  .send({name: 'Taro', age: 10})
  .type('form')
  .end(function(err, res) {
    // なにか処理
  });

簡単ですね。
なんでもjQueryに頼ることに疑問を抱いてきたら使ってみてはいかがでしょうか。

Laravel 4.2でのログローテーション

Laravel 4.2ではインストールした直後だとログがひとつのファイルにずっと出力され続けます。
app/start/global.php
Log::useFiles(storage_path().'/logs/laravel.log');

ここで設定していますね。
これだとログ調査とかいろいろ不便ですので、
日毎に新しいファイルに出力するように修正すると便利です。
Log::useDailyFiles(storage_path().'/logs/laravel.log');

これで快適ロギングライフの出来上がりです。

PAGE TOP