Kohana V3 Auth modülü user_token işlevselliği

1 Cevap php

Acaba Auth modülü user_token işlevleri hakkında kısa kimse? Ne bir kullanımı ve nasıl bu Auth modülü içeriyor?

1 Cevap

Bir kullanıcı sitenizde 'Beni hatırla' kutusunu kontrol zaman kullanılır. A belirteci, kullanıcı için oluşturulan ve user_tokens tabloda depolanır.

Eğer _login işlevi Kohana_Auth_ORM sınıfında bakarsanız, bunu nasıl oluşturulduğunu görebilirsiniz:

    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']);
    }

Bu Kohana_Auth_ORM sınıfında da auto_login() işlevi tarafından kullanılır:

/**
 * 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;
}

Bu doğru yetki denetleyici içinde bu yeteneğini kullanmak size kalmış. Ben Kohana nispeten yeni değilim, ama onlar giriş formuna gitmek ve zaten kaydedilir veya otomatik olarak giriş yapabilirsiniz eğer bir kullanıcıyı yönlendirmek için basit bir kontrol gerçekleştirin:

if (Auth::instance()->logged_in() || Auth::instance()->auto_login())
    Request::instance()->redirect('auth/');

Auth modülü için kodu anlamak çok zor değildir. Eğer Kohana yeni iseniz, ORM modülü nasıl çalıştığını görmek için iyi bir başlangıç ​​noktası.