yiiapi/docs/guide/he/topics.auth.txt

(开头部分) 28KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

אימות משתמשים וניהול גישות
================================

אימות וניהול גישות עבור משתמשים דרוש הם פרט הכרחי עבור עמודים אשר מוגבלים למשתמשים מסויימים. אימות משתמשים נועדה לוודא שהמשתמש שמאומת הוא אכן מי שהוא טוען שהוא. פעולה זו בדרך כלל כרוכה בהזנה של שם משתמש וסיסמא, אך יכולה לכלול דרכים נוספות כדי להציג את הזהות, כמו כרטיס חכם, טביעות אצבע, וכדומה. ניהול גישות הינה פעולה שמבררת אם המשתמש, אשר מחובר (לאחר ביצוע האימות), מורשה לתפעל משאבים מסויימים.
זה בדרך כלל נקבע על ידי בירור אם אותו משתמש הוא בעל תפקיד אשר יכול לגשת לאותם משאבים.

Yii מגיעה עם מערכת אימות וניהול משתמשים מובנת אשר קלה לשימוש וניתנת להתאמה אישית לצרכים מיוחדים.

החלק המרכזי במערכת אימות המשתמשים הוא רכיב המשתמשים אשר מוגדר מראש שהינו אובייקט המיישם את הממשק [IWebUser]. רכיב המשתמשים מייצג את המידע הקבוע אודות זהות המשתמש הנוכחי. אנו יכולים לגשת אליו בכל מקום בעזרת `Yii::app()-»user`.

על ידי שימוש ברכיב המשתמשים אנו יכולים לבדוק אם משתמש מחובר או לא בעזרת [CWebUser::isGuest]; אנו יכולים [לחבר|CWebUser::login] [ולנתק|CWebUser::logout] משתמש; אנו יכולים לבדוק אם משתמש מורשה לבצע פעולות מסויימות בעזרת קריאה ל [CWebUser::checkAccess]; כמו כן אנו יכולים להשיג את [המזהה היחודי|CWebUser::name] של המשתמש הנוכחי ומידע נוסף אודות זהות המשתמש.

הגדרת מחלקת זהות משתמש
-----------------------

בכדי לזהות משתמש, אנו מגדירים מחלקת זהות משתמש אשר כוללת את לוגיקת האימות עצמה. מחלקת זהות המשתמש צריכה ליישם את הממשק [IUserIdentity]. מחלקות שונות ניתנות ליישום עבור גישות אימות משתמשים שונות (לדוגמא, OpenID, LDAP). התחלה טובה תיהיה על ידי הרחבה של המחלקה [CUserIdentity] שהינה המחלקה הבסיסית עבור אימות המשתמשים בהתבסס על שם משתמש וסיסמא.

העבודה העיקרית בהגדרת מחלקת זהות חדשה היא היישום של המתודה [IUserIdentity::authenticate]. מחלקת הזהות יכולה להגדיר מידע נוסף אודות זהות המשתמש שצריך להיות קבוע ונגיש במשך כל הזמן בו המשתמש נמצא באתר.

בדוגמא הבאה, אנו מאמתים את השם משתמש והסיסמא שסופקו אל מול טבלת המשתמשים הנמצאת במסד בעזרת [Active Record](/doc/guide/database.ar). כמו כן אנו דורסים את המתודה `getId` כדי שתחזיר את המשתנה `id_` המוגדר במהלך אימות המשתמש (כברירת מחדל היישום מחזיר את שם המשתמש כמזהה יחודי של המשתמש). במהלך האימות, אנו שומרים את הערך `title` שנשלף מהמסד בתור מידע קבוע באותו השם על ידי קריאה ל [CBaseUserIdentity::setState].

~~~
[php]
class UserIdentity extends CUserIdentity
{
    private $_id;
    public function authenticate()
    {
        $record=User::model()-»findByAttributes(array('username'=»$this-»username));
        if($record===null)
            $this-»errorCode=self::ERROR_USERNAME_INVALID;
        else if($record-»password!==md5($this-»password))
            $this-»errorCode=self::ERROR_PASSWORD_INVALID;
        else
        {
            $this-»_id=$record-»id;
            $this-»setState('title', $record-»title);
            $this-»errorCode=self::ERROR_NONE;
        }
        return !$this-»errorCode;
    }

    public function getId()
    {
        return $this-»_id;
    }
}
~~~

הנתונים הנשמרים במידע הקבוע (על ידי קריאה ל [CBaseUserIdentity::setState]) יועברו ל [CWebUser] אשר שומר אותם באחסון קבוע, כמו לדוגמא Session. לנתונים אלו ניתן לגשת כמאפיינים של [CWebUser]. לדוגמא, אנו יכולים להשיג את הערך `title` של המשתמש הנוכחי בעזרת `Yii::app()-»user-»title` (אפשרות זו קיימת החל מגרסא 1.0.3. בגרסאות קודמות, אנו צריכים להשתמש ב `Yii::app()-»user-»getState('title')`).

» Info|מידע: כברירת מחדל, [CWebUser] משתמש ב Session כאחסון קבוע למידע אודות זהות המשתמש. במידה והאפשרות של התחברות עם עוגיות פעילה (על ידי הגדרת המאפיין [CWebUser::allowAutoLogin] ל True ), ניתן לשמור את המידע אודות זהות המשתמש בעוגיה. וודא שאינך שומר ערכים רגישים בתוך האחסון הקבוע של זהות המשתמש (לדוגמא סיסמא).

התחברות והתנתקות
----------------

שימוש במחלקת הזהות ורכיב ניהול המשתמשים, אנו יכולים ליישם פעולות התחברות וניתוק בקלות.

~~~
[php]
后面还有 316 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。