前島です。

ざっとドキュメント見た感じ次のような感じかなあと思いました。参考になれば。

* sign_in メソッドは warden の set_user メソッドを呼び出している
* set_user メソッドの中でなにか起こっている?(しっかり調べたわけではないので推測)
* sign_in user, bypass: true とかすると set_user メソッド呼び出さずに直接 session をいじってログイン状態にする



2014年1月2日 23:33 杉田臣輔 <shinriyo@gmail.com>:
皆様

こんにちは、杉田といいます

「RailsとiPhoneではじめるアプリケーション開発」という書籍にて
iOSとRailsの連携を行っています。

質問ですが、
Deviseには、sign_in()というヘルパーメソッドがありますが、

app/controllers/api/sessions_controller.rb内にて、
resource = User.find_for_database_authentication(:email => params[:user][:email])
でクライアントから受け取ったresourceを、
if resource.valid_password?(params[:user][:password])
の判定後に、

sign_in("user", resource)

を行ったところ、それ以降の処理がうまく実行されていないようです。
sign_in(:user, resource)とuserをシンボルにしても同様の結果でした。

その際には、rails sでのコンソールには、
===
Completed 401 Unauthorized in 122ms (Views: 1.1ms | ActiveRecord: 4.5ms)
===
が表示されます。

ソースコード自体はこのサンプルをベースに行っています。

Deviseのバージョンは2.2、3.0、3.1を試しましたが同様でした。
現在は2.2.8を使用しています。


何卒、よろしくお願いします。



--
前島 真一(@netwillnet)
http://willnet.in/