RoR on GAE/Jでユーザー認証使ってみた

http://itrain.appspot.com/top/secret

YARBLの人が作ったBeeU使うと超簡単だった。というか正直言えば、使わなくてもたぶんそれほど難しくない。

まずBeeUの本体を取って来てlib以下に置く

$ git clone git://github.com/olabini/beeu.git
$ cp beeu/beeu/beeu.rb lib/

コントローラー改造

require 'beeu'
class TopController < ApplicationController
  include BeeU
  before_filter :verify_admin_user, :only => 'secret'
  before_filter :assign_user, :only => 'secret'
  before_filter :assign_admin_status, :only => 'secret'

  def index
    render :text => "I'm JRuby on Rails."
  end 

  def secret
    render :text => <<-EOS
      Hi #{@user.nickname}, 
      you are #{@admin ? '' : 'not '}an administrator.
    EOS
  end 
end

war作って本番を更新

$ rm -rf tmp/war
$ warble war
$ appengine-java-sdk-1.2.0/bin/appcfg.sh update tmp/war

確認
http://itrain.appspot.com/top/secret
にアクセスするとログイン画面にリダイレクトされて

ログインに成功するとユーザー名と、管理者かそうでないかが表示される。もちろん管理者は私だけなので、他の人がアクセスすると「you are not an administrator.」って言われるはず。

以上。こんだけ。