RESTful login

  • ログインする = 有効なログイン済み"カレント"ユーザーを作る
  • ログアウトする = 有効なログイン済み"カレント"ユーザーを削除する
# config/routes.rb
# --
  map.resources :users, :controller => "wj_users",
  :collection => {
    :current => :any
  } do |users|
  end
# app/controller/wj_users_controller.rb
# --
  def current
    case request.method
    when get
      # do nothing
      raise WebJourney::AuthenticationRequiredError.new unless login?
    when :put, :post
      do_login(params[:id], params[:password])
    when :delete
      do_logout
      return redirect_to(page_path(WjPage.top))
    end
    # respond cases except delete
    respond_to do |format|
      format.html { redirect_to page_path(current_user.find_or_create_start_page)}
      format.xml  { redirect_to user_path(current_user)}
    end
  end


こういうこと?
2008/01/07 追記 : ログインしていないときはGETは401を返すように。