このように明示的にセッションを作成しようとしていますが、セッションがUserSession.create(@user, true)
作成されていません。current_user
nil
しかし、これを行うと、<#UserSession:{:unauthorized_record=>""}>が表示されます。
us = UserSession.create(@user, true)
RAILS_DEFAULT_LOGGER.info(us.inspect) #=> UserSession: {:unauthorized_record=>""}
Authlogic :: Session::UnauthorizedRecordを見てみました。
Authlogicは、ユーザーが本人であることをすでに確認していると想定しているため、これには注意してください。たとえば、これはセッションを内部的に永続化するために使用されるメソッドです。Authlogicは、永続性トークンを持つユーザーを検索します。この時点で、ユーザーが本人であることがわかっているため、Authlogicはレコードとのセッションを作成するだけです。これは、OpenIDなどのサードパーティの認証方法で特に役立ちます。そのメソッドにIDを検証させ、検証されたら、オブジェクトを渡してセッションを作成します。
これはまさに私がやろうとしていることです(私はomniauthを使用して認証し、authlogicを使用してセッションを作成しています)。
で有効なセッションを取得できるように、これを修正するにはどうすればよいですcurrent_user
か?