KohanaのV3認証モジュールuser_token機能
-
23-09-2019 - |
質問
認証モジュールでuser_token機能について誰でも簡単にできますか?どのような使用であり、これは認証モジュールに組み込まれてどのように?
解決
あなたのサイト上でのユーザーのチェックボックス「私を忘れないでください」のとき
はそれが使用されています。トークンは、ユーザのために生成され、user_tokensテーブルに格納されます。
:あなたはを_login の機能でKohana_Auth_ORMクラスを見てみると、、あなたはそれが作成される方法を見ることができます
if ($remember === TRUE)
{
// Create a new autologin token
$token = ORM::factory('user_token');
// Set token data
$token->user_id = $user->id;
$token->expires = time() + $this->config['lifetime'];
$token->save();
// Set the autologin cookie
cookie::set('authautologin', $token->token, $this->config['lifetime']);
}
はまたKohana_Auth_ORMクラス内の auto_login()の関数によって使用されます。
/**
* Logs a user in, based on the authautologin cookie.
*
* @return boolean
*/
public function auto_login()
{
if ($token = cookie::get('authautologin'))
{
// Load the token and user
$token = ORM::factory('user_token', array('token' => $token));
if ($token->loaded() AND $token->user->loaded())
{
if ($token->user_agent === sha1(Request::$user_agent))
{
// Save the token to create a new unique token
$token->save();
// Set the new token
cookie::set('authautologin', $token->token, $token->expires - time());
// Complete the login with the found data
$this->complete_login($token->user);
// Automatic login was successful
return TRUE;
}
// Token is invalid
$token->delete();
}
}
return FALSE;
}
これは正しく認証コントローラ内この機能を使用するのはあなた次第です。私はKohanaのは比較的新しいんだけど、私は、彼らがログインフォームに移動し、すでにログインしている場合や、ユーザーをリダイレクトするために、簡単なチェックを実行することができ、自動的にログインます:
if (Auth::instance()->logged_in() || Auth::instance()->auto_login())
Request::instance()->redirect('auth/');
認証モジュールのコードを理解するにはあまりにも難しいことではありません。もしあなたしているのKohanaに新しい、それがORMモジュールがどのように動作するかを見るための出発点は良いです。
所属していません StackOverflow