NAME
OpenIDAuthenticationGuide::zhtw - 為你的 Jifty 應用程式提供 OpenID 驗證
DESCRIPTION
為你的 Jifty 應用程式提供 OpenID 驗證
USAGE
Config
請在 etc/config.yml 設定檔內提供 OpenIDSecret
欄位設定驗證碼。另外你也可以提供 OpenIDUA
來使用不同的代理器 (UserAgent) 類別 (非必要)。OpenID Plugin 則會預設使用 LWPx::ParanoidAgent .
---
application:
OpenIDSecret: 1234
OpenIDUA: LWP::UserAgent
你也可以從命令列指定你所要使用的代理器 (UserAgent) 類別 ,用 OpenIDUserAgent
:
OpenIDUserAgent=LWP::UserAgent bin/jifty server
如果你想用 LWPx::ParanoidAgent 來作為你的 OpenID 代理器。 那麼如果你需要提供你自己的 OpenID 伺服器作為驗證,請將你的伺服器位址加入至
JIFTY_OPENID_WHITELIST_HOST
這個環境變數內:
export JIFTY_OPENID_WHITELIST_HOST=123.123.123.123
User Model
第一步,你需要建立自己的 User 資料模型 ( Model ) 來存放使用者資料。
然後你需要將 UserID 插件提供的使用者模型結合你的 User 資料模型,讓你的 模型可以同時擁有 OpenID 插件所定義的欄位。 請在你的模型檔案內加入
use Jifty::Plugin::OpenID::Mixin::Model::User
此外 OpenID 插件會呼叫 UserModel 的 brief_description 函式來取得可閱讀的唯一值 在使用 CurrentUser 物件時,會需要讓 brief_description 函式來取得有意義的使用者名稱
所以你需要在 User 模型內實做 name
函式。
大致上看來會像這樣:
use TestApp::Record schema {
column email =>
type is 'varchar';
};
use Jifty::Plugin::OpenID::Mixin::Model::User;
sub name {
my $self = shift;
return $self->email;
}
請參見 Jifty::Record 所定義的 brief_description
函式來了解更詳細的資訊。
View
OpenID 插件提供了 AuthenticateOpenID 的動作 (Action) 。所以你可以在你的樣板中 來繪製 AuthenticationOpenID 提供的表單:
form {
my $openid = new_action( class => 'AuthenticateOpenID',
moniker => 'authenticateopenid' );
render_action( $openid );
};
這個動作 (Action) 會繪製一個提供 OpenID 網址的欄位。 然後,你接著也需要在表單內提供一個送出的按鈕:
form {
my $openid = new_action( class => 'AuthenticateOpenID',
moniker => 'authenticateopenid' );
# ....
render_action( $openid );
outs_raw(
Jifty->web->return(
to => '/openid_verify_done',
label => _("Login with OpenID"),
submit => $openid
));
};
在 to
欄位,是用來讓已經確認身份的使用者確認之後導向的頁面。 所以你需要實做一個 /openid_verify_done
的樣板:
template '/openid_verify_done' => page {
h1 { "Done" };
};
打開你的 Jifty ,測試一下吧!
AUTHOR
林佑安 <cornelius.howl _at_ gmail.com
> http://oulixe.us