Railsプログラムをopenidに対応
Login engineは、1.2.3で動くようで、それを使っていた。
参考: http://rubyist.g.hatena.ne.jp/pulscope/20070327/p1
しかし、Windows環境で動いているのだが、同じ環境をFreeBSD6.2で動かない。
厳密にいえば動いているのだが、ユーザー登録から先に勧めない
WindowsでMySQLのレコードをコピーすると、登録はできないが認証はできるので、そうやって使っていた。
1日考えても解決できないので、OpenIDを使うことにした。
まずGemをインストール
Pluginをインストール
ruby script/plugin install http://svn.eastmedia.com/svn/bantay/plugins/trunk/restful_open_id_authentication
OpenID対応のコントローラー、ライブラリなどをGenerate
ruby script/generate open_id_authenticated user session
これはしないで、下記のSQLを実行したほうがいいみたい。
(MySQL 5は動いた気がするが、4.1では動かなかった。うーん)
app/controllers/application.rb に以下を記述
require_dependency "openid_login_system"
class ApplicationController < ActionController::Base
include OpenidLoginSystem
model :user
end
認証が必要なコントローラーに以下を記述
before_filter :authorize_action
↑これを、app/controllers/application.rb に書いたらループしてうまくいかなかった。これに半日悩んだ。
config/root.rbにセッション関係の記述はなくても動いているのだが、、、必要かな。
テーブルとして
CREATE TABLE `users` (
`id` int,
`openid_url` varchar(256),
PRIMARY KEY (`id`)
)
openidは、http://www.openkey.com/ や http://www.openid.ne.jp/
それぞれ以下のURI(http://〜)がIDになる。
http://profile.openkey.com/ユーザー名
http://ユーザー名.openid.ne.jp/
思い出しながら書いているので、まちがったらごめん。