CWebUser
鍖 | system.web.auth |
---|---|
缁ф壙 | class CWebUser » CApplicationComponent » CComponent |
瀹炵幇 | IApplicationComponent, IWebUser |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CWebUser.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/web/auth/CWebUser.php |
CWebUser浣滀负ID涓簎ser鐨勪竴涓簲鐢ㄧ▼搴忕粍浠躲 鍥犳锛屽湪浠讳綍鍦版柟閮借兘閫氳繃
Yii::app()->user
璁块棶鐢ㄦ埛鐘舵併
CWebUser搴旇鍜identity 涓璧蜂娇鐢ㄥ疄鐜颁簡瀹為檯鐨勯獙璇佺畻娉曘
涓涓吀鍨嬬殑浣跨敤CWebUser鐨勮韩浠介獙璇佽繃绋嬪涓嬶細
- 鐢ㄦ埛鎻愪緵鎵闇鐨勪俊鎭繘琛岃韩浠介獙璇併
- 涓涓槸鐢辩敤鎴锋彁渚涚殑淇℃伅鍒涘缓鐨韬唤鏍囪瘑瀹炰緥銆
- 璋冪敤IUserIdentity::authenticate鏉ユ鏌ヨ韩浠芥爣璇嗘槸鍚︽湁鏁
- 濡傛灉鏈夋晥锛岃皟鐢CWebUser::login鐧婚檰鐢ㄦ埛锛 鐒跺悗鐢ㄦ埛娴忚鍣ㄩ噸瀹氬悜鍒returnUrl銆
- 濡傛灉鏃犳晥锛屼粠韬唤鏍囪瘑涓绱㈤敊璇唬鐮佹垨閿欒淇℃伅 鐒跺悗鏄剧ず銆
id鍜name灞炴ч兘鏄敤鎴风殑鏍囪瘑绗︺ 鍓嶈呬富瑕佹槸鍐呴儴浣跨敤锛堝涓婚敭锛夛紝 鍚庤呯敤浜庢樉绀猴紙濡傜敤鎴峰悕锛夈id灞炴 灞炴у湪鏁翠釜鐢ㄦ埛浼氳瘽涓槸涓涓寔涔呮 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚畠鍙互鏄敤鎴峰悕锛屾垨鍒殑涓滆タ锛屽彇鍐充簬 identity class鐨勫疄鐜般
id鍜name鍦ㄦ暣涓敤鎴蜂細鍛樹腑閮芥槸鎸佷箙鐨勩 姝ゅ锛屼竴涓韩浠芥爣璇嗗彲鑳芥湁棰濆鐨勯氳繃璋冪敤 getState璁块棶鐨勫彲鎸佷箙鎬ф暟鎹 娉ㄦ剰锛屽綋鍩轰簬cookie鐨勯獙璇鍚敤鏃讹紝 鎵鏈夎繖浜涙寔涔呮ф暟鎹皢琚偍瀛樺湪cookie涓傚洜姝わ紝 鍦ㄨ繖浜涙寔涔呮ф暟鎹腑涓嶈瀛樺偍瀵嗙爜鎴栧叾瀹冩晱鎰熶俊鎭傚鏋滈渶瑕佺殑璇濅綘 搴旇鐩存帴鎶婂畠浠瓨鍌ㄥ湪鏈嶅姟绔殑session涓
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
allowAutoLogin | boolean | 鏄惁寮鍚熀浜巆ookie鐨勭櫥褰曪紝榛樿涓篺alse銆 | CWebUser |
authTimeout | integer | 鐢ㄦ埛鐧婚檰鍚庡浜庨潪娲诲姩鐘舵佺殑瓒呮椂鏃堕棿锛堢锛夈 濡傛灉娌℃湁璁剧疆璇ュ睘鎬э紝閭d箞鍦ㄥ綋鍓嶇殑session鍒版湡鍚庣敤鎴蜂細灏嗚娉ㄩ攢 锛堝鐓CHttpSession::timeout锛夈 | CWebUser |
autoRenewCookie | boolean | 鏄惁鍦ㄦ瘡娆¢〉闈㈣姹傚悗鑷姩鏇存柊韬唤鏍囪瘑銆 榛樿涓篺alse銆傝繖涓睘鎬т粎褰allowAutoLogin涓簍rue鏃惰捣浣滅敤銆 褰撹灞炴т负false鏃讹紝cookie浠庣敤鎴风涓娆$櫥闄嗙殑鏃堕棿璧凤紝鍦ㄦ寚瀹氱殑鎸佺画鏃堕棿鍚庤繃鏈熴 褰撹灞炴т负true鏃讹紝cookie浠庣敤鎴锋渶鍚庝竴娆$櫥闄嗙殑鏃堕棿璧凤紝 鍦ㄦ寚瀹氱殑鎸佺画鏃堕棿鍚庤繃鏈熴 | CWebUser |
autoUpdateFlash | boolean | 鏄惁鑷姩鏇存柊鎻愮ず淇℃伅鐨勬湁鏁堟с 榛樿涓簍rue锛屾剰鍛崇潃鎻愮ず淇℃伅浠呭湪褰撳墠璇锋眰鍜屼笅涓娆¤姹傛椂鏈夋晥銆 濡傛灉杩欎釜璁剧疆涓篺alse锛屼綘蹇呴』纭繚涓涓彁绀轰俊鎭湪浣跨敤鍚庡垹闄ゃ 锛堝彲浠ヨ皟鐢getFlash骞朵笖璁剧疆绗笁涓弬鏁颁负true鏉ュ畬鎴愶級銆 | CWebUser |
behaviors | array | 杩欎釜搴旂敤缁勪欢闄勫姞鐨勮涓恒 杩欐琛屼负灏嗗湪搴旂敤缁勪欢璋冪敤init鏃堕檮鍔犲湪搴旂敤缁勪欢涓娿 璇峰弬鐓CModel::behaviors濡備綍鎸囧畾姝ゅ睘鎬у笺 | CApplicationComponent |
flashes | array | 杩斿洖鎵鏈夌殑鎻愮ず淇℃伅銆 | CWebUser |
guestName | string | 鏉ュ鐢ㄦ埛鐨勫悕绉帮紝榛樿涓衡淕uest鈥濄 杩欎釜灞炴х敤浜getName鏂规硶锛屽綋褰撳墠鐢ㄦ埛涓烘潵瀹剧敤鎴锋椂(鏈璇佺殑)銆 | CWebUser |
id | mixed | 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄潵瀹剧敤鎴枫 | CWebUser |
identityCookie | array | 鐢ㄦ潵鍒濆鍖栬韩浠絚ookie鐨勫睘鎬у硷紙閿悕锛嶉敭鍊硷級 涓浜CHttpCookie灞炴т細琚垵濮嬪寲銆 杩欎釜灞炴т粎褰allowAutoLogin涓簍rue鏃舵湁鏁堛 | CWebUser |
isGuest | boolean | 褰撳墠搴旂敤绋嬪簭鐢ㄦ埛鏄惁鏄竴涓潵瀹剧敤鎴枫 | CWebUser |
isInitialized | boolean | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
loginRequiredAjaxResponse | string | 褰撲娇鐢╝jax鏃剁敤鎴风殑浼氳瘽瓒呮椂锛岃繖绉嶆儏鍐典笅杈撳嚭鍊笺
褰撳彂鍑鸿姹傛椂锛岀敤鎴蜂細璇濆凡缁忚秴鏃讹紝loginRequired浼氶噸瀹氬悜loginUrl鍘荤櫥褰曘
濡傛灉鍦╝jax璇锋眰涓嬪彂鐢燂紝浼氳繑鍥炴暣涓櫥褰曢〉闈㈢殑銆傝繖涓細瀵艰嚧
涓浜涢潪甯镐笉濂界殑鐢ㄦ埛浣撻獙锛屽洜涓烘湡鏈涜繑鍥炵殑鏄痡son鏁扮粍锛屾垨鑰呮槸棰勫畾涔夌殑瀛楃涓诧紝鍥犱负杩欑鎯呭喌涓嬪繀椤昏蹇界暐鐧诲綍椤甸潰銆
涓轰簡瑙e喅杩欎釜闂锛屽彲浠ヨ缃繖涓睘鎬т负鏈熸湜鐨勮繑鍥炲笺
濡傛灉璁剧疆浜嗚繖涓睘鎬э紝褰撲娇鐢╝jax锛岀敤鎴蜂細璇濊秴鏃朵簡锛岄偅涔堝氨浼氳繑鍥炶繖涓笺 |
CWebUser |
loginUrl | string|array | 鐢ㄤ簬鐧诲綍鐨刄RL銆傚鏋滀娇鐢ㄦ暟缁勶紝绗竴涓厓绱犲簲璇ヤ负鐧诲綍鍔ㄤ綔鐨勮矾鐢憋紝 鍏跺畠鐨勬槸閿悕锛嶉敭鍊煎舰寮忕殑鐨凣ET鍙傛暟 鏉ョ粍鎴愮櫥闄嗙殑URL锛堝锛宎rray('/site/login')锛夈傚鏋滆繖涓睘鎬т负null锛 鍒欑敤涓涓403 HTTP 寮傚父鏉ヤ唬鏇裤 | CWebUser |
name | string | 杩斿洖鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈 | CWebUser |
returnUrl | string | 杩斿洖鐢ㄦ埛鎴愬姛鐧婚檰鍚庡簲璇ヨ烦杞殑URL銆 | CWebUser |
stateKeyPrefix | string | 瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆 | CWebUser |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__get() | PHP榄旀湳鏂规硶銆 | CWebUser |
__isset() | PHP榄旀湳鏂规硶銆 | CWebUser |
__set() | PHP榄旀湳鏂规硶銆 | CWebUser |
__unset() | PHP榄旀湳鏂规硶銆 | CWebUser |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
checkAccess() | 妫鏌ョ敤鎴风殑鎵ц鏉冮檺銆 | CWebUser |
clearStates() | 浠庢寔涔呭瓨鍌ㄤ腑娓呴櫎鎵鏈夌殑鐢ㄦ埛韬唤淇℃伅銆 | CWebUser |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getFlash() | 杩斿洖涓涓彁绀轰俊鎭 | CWebUser |
getFlashes() | 杩斿洖鎵鏈夌殑鎻愮ず淇℃伅銆 | CWebUser |
getId() | 杩斿洖鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄潵瀹剧敤鎴枫 | CWebUser |
getIsGuest() | 妫鏌ュ綋鍓嶅簲鐢ㄧ▼搴忕敤鎴锋槸鍚︽槸涓涓潵瀹剧敤鎴枫 | CWebUser |
getIsInitialized() | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
getName() | 杩斿洖鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈 | CWebUser |
getReturnUrl() | 杩斿洖鐢ㄦ埛鎴愬姛鐧婚檰鍚庡簲璇ヨ烦杞殑URL銆 | CWebUser |
getState() | 杩斿洖鐢ㄦ埛浼氳瘽涓寚瀹氬彉閲忕殑鍊笺 | CWebUser |
getStateKeyPrefix() | 杩斿洖瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆 | CWebUser |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasFlash() | 纭畾鏌愪釜鎸囧畾鐨勬爣璇嗙鏄惁瀛樺湪 | CWebUser |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
hasState() | 杩斿洖鍦ㄤ細璇濅腑鏄惁鏈変竴涓壒瀹氬悕绉扮殑浼氳瘽鍙橀噺銆 | CWebUser |
init() | 鍒濆鍖栧簲鐢ㄧ粍浠躲 | CWebUser |
login() | 鐢ㄦ埛鐧诲綍銆 | CWebUser |
loginRequired() | 閲嶅畾鍚戠敤鎴锋祻瑙堝櫒鍒扮櫥闄嗛〉闈€ | CWebUser |
logout() | 鐧诲嚭褰撳墠鐢ㄦ埛銆 | CWebUser |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
setFlash() | 瀛樺偍涓涓彁绀轰俊鎭 | CWebUser |
setId() | 璁剧疆鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄竴涓潵瀹剧敤鎴枫 | CWebUser |
setName() | 璁剧疆鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈 | CWebUser |
setReturnUrl() | 璁剧疆鐢ㄦ埛鐧诲綍鍚庡簲璇ヨ烦杞殑URL銆 | CWebUser |
setState() | 鍦ㄧ敤鎴蜂細璇濅腑瀛樺偍涓涓彉閲忋 | CWebUser |
setStateKeyPrefix() | 璁剧疆瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆 | CWebUser |
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
afterLogin() | 鐢ㄦ埛鎴愬姛鐧诲綍鍚庤璋冪敤鐨勬柟娉曘 | CWebUser |
afterLogout() | 鐢ㄦ埛鐧诲嚭鍚庤璋冪敤鐨勬柟娉曘 | CWebUser |
beforeLogin() | 鍦ㄧ敤鎴风櫥褰曢偅涓鏃跺埢鍓嶈璋冪敤鐨勬柟娉曘 | CWebUser |
beforeLogout() | 褰撶敤鎴疯皟鐢logout娉ㄩ攢鏃讹紝灏嗚皟鐢ㄨ鏂规硶銆 | CWebUser |
changeIdentity() | 鐢ㄦ寚瀹氱殑鏍囪瘑绗︿俊鎭潵鏀瑰彉褰撳墠鐨勭敤鎴枫 | CWebUser |
createIdentityCookie() | 鍒涘缓涓涓猚ookie鏉ュ瓨鍌ㄦ爣璇嗙淇℃伅銆 | CWebUser |
loadIdentityStates() | 浠庝竴涓暟缁勫姞杞借韩浠戒俊鎭苟淇濆瓨鍒版寔涔呯殑瀛樺偍涓 | CWebUser |
renewCookie() | 鏇存柊瀛樺偍韬唤鐨刢ookie銆 | CWebUser |
restoreFromCookie() | 鐢ㄤ粠cookie鑾峰彇鐨勪俊鎭~鍏呭埌褰撳墠鐨勭敤鎴峰璞° | CWebUser |
saveIdentityStates() | 浠庢寔涔呭瓨鍌ㄤ腑鎵惧洖淇℃伅骞跺皢瀹冧滑瀛樺偍鍒颁竴涓暟缁勪腑 | CWebUser |
saveToCookie() | 淇濆瓨蹇呰鐨勭敤鎴风殑鏁版嵁鍒颁竴涓猚ookie銆 | CWebUser |
updateAuthStatus() | 鏍规嵁authTimeout鏉ユ洿鏂拌璇佺姸鎬併 | CWebUser |
updateFlash() | 鏇存柊鎻愮ず淇℃伅鐨勫唴閮ㄨ鏁板櫒銆 | CWebUser |
灞炴ц缁
鏄惁寮鍚熀浜巆ookie鐨勭櫥褰曪紝榛樿涓篺alse銆
鐢ㄦ埛鐧婚檰鍚庡浜庨潪娲诲姩鐘舵佺殑瓒呮椂鏃堕棿锛堢锛夈 濡傛灉娌℃湁璁剧疆璇ュ睘鎬э紝閭d箞鍦ㄥ綋鍓嶇殑session鍒版湡鍚庣敤鎴蜂細灏嗚娉ㄩ攢 锛堝鐓CHttpSession::timeout锛夈
鏄惁鍦ㄦ瘡娆¢〉闈㈣姹傚悗鑷姩鏇存柊韬唤鏍囪瘑銆 榛樿涓篺alse銆傝繖涓睘鎬т粎褰allowAutoLogin涓簍rue鏃惰捣浣滅敤銆 褰撹灞炴т负false鏃讹紝cookie浠庣敤鎴风涓娆$櫥闄嗙殑鏃堕棿璧凤紝鍦ㄦ寚瀹氱殑鎸佺画鏃堕棿鍚庤繃鏈熴 褰撹灞炴т负true鏃讹紝cookie浠庣敤鎴锋渶鍚庝竴娆$櫥闄嗙殑鏃堕棿璧凤紝 鍦ㄦ寚瀹氱殑鎸佺画鏃堕棿鍚庤繃鏈熴
鍙傝
鏄惁鑷姩鏇存柊鎻愮ず淇℃伅鐨勬湁鏁堟с 榛樿涓簍rue锛屾剰鍛崇潃鎻愮ず淇℃伅浠呭湪褰撳墠璇锋眰鍜屼笅涓娆¤姹傛椂鏈夋晥銆 濡傛灉杩欎釜璁剧疆涓篺alse锛屼綘蹇呴』纭繚涓涓彁绀轰俊鎭湪浣跨敤鍚庡垹闄ゃ 锛堝彲浠ヨ皟鐢getFlash骞朵笖璁剧疆绗笁涓弬鏁颁负true鏉ュ畬鎴愶級銆
杩斿洖鎵鏈夌殑鎻愮ず淇℃伅銆 姝ゆ柟娉曚笌getFlash鏂规硶绫讳技锛 涓嶈繃瀹冭繑鍥炵殑鏄墍鏈夊綋鍓嶆湁鏁堢殑鎻愮ず淇℃伅銆
鏉ュ鐢ㄦ埛鐨勫悕绉帮紝榛樿涓衡淕uest鈥濄 杩欎釜灞炴х敤浜getName鏂规硶锛屽綋褰撳墠鐢ㄦ埛涓烘潵瀹剧敤鎴锋椂(鏈璇佺殑)銆
鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄潵瀹剧敤鎴枫
鐢ㄦ潵鍒濆鍖栬韩浠絚ookie鐨勫睘鎬у硷紙閿悕锛嶉敭鍊硷級 涓浜CHttpCookie灞炴т細琚垵濮嬪寲銆 杩欎釜灞炴т粎褰allowAutoLogin涓簍rue鏃舵湁鏁堛
褰撳墠搴旂敤绋嬪簭鐢ㄦ埛鏄惁鏄竴涓潵瀹剧敤鎴枫
褰撲娇鐢╝jax鏃剁敤鎴风殑浼氳瘽瓒呮椂锛岃繖绉嶆儏鍐典笅杈撳嚭鍊笺
褰撳彂鍑鸿姹傛椂锛岀敤鎴蜂細璇濆凡缁忚秴鏃讹紝loginRequired浼氶噸瀹氬悜loginUrl鍘荤櫥褰曘
濡傛灉鍦╝jax璇锋眰涓嬪彂鐢燂紝浼氳繑鍥炴暣涓櫥褰曢〉闈㈢殑銆傝繖涓細瀵艰嚧
涓浜涢潪甯镐笉濂界殑鐢ㄦ埛浣撻獙锛屽洜涓烘湡鏈涜繑鍥炵殑鏄痡son鏁扮粍锛屾垨鑰呮槸棰勫畾涔夌殑瀛楃涓诧紝鍥犱负杩欑鎯呭喌涓嬪繀椤昏蹇界暐鐧诲綍椤甸潰銆
涓轰簡瑙e喅杩欎釜闂锛屽彲浠ヨ缃繖涓睘鎬т负鏈熸湜鐨勮繑鍥炲笺
濡傛灉璁剧疆浜嗚繖涓睘鎬э紝褰撲娇鐢╝jax锛岀敤鎴蜂細璇濊秴鏃朵簡锛岄偅涔堝氨浼氳繑鍥炶繖涓笺
鍙傝
鐢ㄤ簬鐧诲綍鐨刄RL銆傚鏋滀娇鐢ㄦ暟缁勶紝绗竴涓厓绱犲簲璇ヤ负鐧诲綍鍔ㄤ綔鐨勮矾鐢憋紝 鍏跺畠鐨勬槸閿悕锛嶉敭鍊煎舰寮忕殑鐨凣ET鍙傛暟 鏉ョ粍鎴愮櫥闄嗙殑URL锛堝锛宎rray('/site/login')锛夈傚鏋滆繖涓睘鎬т负null锛 鍒欑敤涓涓403 HTTP 寮傚父鏉ヤ唬鏇裤
杩斿洖鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈 杩欎釜鏄富瑕佺敤浜庢樉绀虹殑鍞竴鐨勬爣璇嗙銆
杩斿洖鐢ㄦ埛鎴愬姛鐧婚檰鍚庡簲璇ヨ烦杞殑URL銆 杩欎釜灞炴у父鐢ㄤ簬鐧婚檰鍔ㄤ綔銆傚鏋滄垚鍔熺櫥闄嗭紝灏嗚鍙栬繖涓睘鎬э紝 鐒跺悗鐢ㄥ畠鏉ラ噸瀹氬悜鐢ㄦ埛鐨勬祻瑙堝櫒銆
鍙傝
瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆
鏂规硶璇︾粏
public mixed __get(string $name)
| ||
$name | string | 灞炴у悕瀛 |
{return} | mixed | 灞炴у |
public function __get($name)
{
if($this->hasState($name))
return $this->getState($name);
else
return parent::__get($name);
}
PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬佸綋浣滃睘鎬ф潵璁块棶銆
public boolean __isset(string $name)
| ||
$name | string | 灞炴у悕瀛 |
{return} | boolean |
public function __isset($name)
{
if($this->hasState($name))
return $this->getState($name)!==null;
else
return parent::__isset($name);
}
PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬佸綋浣渘ull鏉ユ娴嬨
public void __set(string $name, mixed $value)
| ||
$name | string | 灞炴у悕瀛 |
$value | mixed | 灞炴у |
public function __set($name,$value)
{
if($this->hasState($name))
$this->setState($name,$value);
else
parent::__set($name,$value);
}
PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬佸綋浣滃睘鎬ф潵璁剧疆銆
public void __unset(string $name)
| ||
$name | string | 灞炴у悕瀛 |
public function __unset($name)
{
if($this->hasState($name))
$this->setState($name,null);
else
parent::__unset($name);
}
PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬侀噸缃
protected void afterLogin(boolean $fromCookie)
| ||
$fromCookie | boolean | 鏄惁鏄熀浜巆ookie鐧婚檰鐨勩 |
鐢ㄦ埛鎴愬姛鐧诲綍鍚庤璋冪敤鐨勬柟娉曘 浣犲彲浠ヨ鐩栬繖涓柟娉曞仛涓浜涘叾瀹冨鐞嗭紙濡傦紝璁板綍鐢ㄦ埛鐨勭櫥闄唅p鍜岀櫥闄嗘椂闂达紝 鍔犺浇鐢ㄦ埛鐨勪俊鎭瓑锛夈
protected void afterLogout()
|
鐢ㄦ埛鐧诲嚭鍚庤璋冪敤鐨勬柟娉曘 浣犲彲浠ラ噸鍐欒鏂规硶鏉ュ仛涓浜涢澶栫殑娓呴櫎鐢ㄦ埛淇℃伅宸ヤ綔銆
protected boolean beforeLogin(mixed $id, array $states, boolean $fromCookie)
| ||
$id | mixed | 鐢ㄦ埛ID銆傝繖涓拰getId()鏂规硶杩斿洖鐨勬槸涓鏍风殑銆 |
$states | array | 鐢ㄦ埛鏍囪瘑锛坲ser identity锛夋彁渚涚殑閿悕锛嶉敭鍊煎舰寮忕殑鏁扮粍銆 |
$fromCookie | boolean | 鏄惁涓哄熀浜巆ookie鐨勭櫥褰 |
{return} | boolean | 鐢ㄦ埛鏄惁鍙互鐧诲綍 |
protected function beforeLogin($id,$states,$fromCookie)
{
return true;
}
鍦ㄧ敤鎴风櫥褰曢偅涓鏃跺埢鍓嶈璋冪敤鐨勬柟娉曘 浣犲彲浠ラ噸鍐欒鏂规硶鏉ュ仛涓浜涢澶栫殑瀹夊叏妫鏌ャ 渚嬪, 褰撳熀浜巆ookie鐧诲綍鏃, 浣犲彲鑳芥兂瑕侀獙璇佷繚瀛樺湪鐢ㄦ埛ID瀵瑰簲鐘舵佺殑闅忔満浠ょ墝 鏄惁鍙互鍦 鏁版嵁搴撲腑鎵惧埌銆傝繖灏嗛槻姝㈤粦瀹吉閫燾ookie锛 鍗充娇浠栦滑鑾峰彇浜嗘湇鍔″櫒绉侀挜銆
protected boolean beforeLogout()
| ||
{return} | boolean | 鏄惁娉ㄩ攢鐢ㄦ埛 |
褰撶敤鎴疯皟鐢logout娉ㄩ攢鏃讹紝灏嗚皟鐢ㄨ鏂规硶銆 濡傛灉璇ユ柟娉曡繑鍥瀎alse锛屾敞閿鍔ㄤ綔灏嗚鍙栨秷銆 浣犲彲浠ラ噸鍐欒鏂规硶鍦ㄧ敤鎴锋敞閿鍓嶆潵 澶勭悊涓浜涢澶栫殑宸ヤ綔銆
protected void changeIdentity(mixed $id, string $name, array $states)
| ||
$id | mixed | 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗 |
$name | string | 鐢ㄦ埛鐨勬樉绀虹殑鍚嶇О |
$states | array | 韬唤淇℃伅鏁扮粍 |
protected function changeIdentity($id,$name,$states)
{
Yii::app()->getSession()->regenerateID();
$this->setId($id);
$this->setName($name);
$this->loadIdentityStates($states);
}
鐢ㄦ寚瀹氱殑鏍囪瘑绗︿俊鎭潵鏀瑰彉褰撳墠鐨勭敤鎴枫 璇ユ柟娉曡login鍜restoreFromCookie 璋冪敤锛屽湪褰撳墠鐢ㄦ埛闇瑕佸~鍏呰韩浠戒俊鎭椂銆 娲剧敓绫诲彲浠ラ噸鍐欒鏂规硶锛 鏉ヨ幏鍙栨洿澶氱殑鐢ㄦ埛鐩稿叧淇℃伅銆 纭繚棣栧厛璋冪敤鐖剁被瀹炵幇銆
public boolean checkAccess(string $operation, array $params=array (
), boolean $allowCaching=true)
| ||
$operation | string | 闇瑕佹鏌ョ殑鎿嶄綔鍚嶇О銆 |
$params | array | 閿悕锛嶉敭鍊煎锛屽皢閫氳繃鐩稿叧鐨勪笟鍔¤鍒欐潵鍒嗛厤 缁欑敤鎴风殑浠诲姟鍜岃鑹层 |
$allowCaching | boolean | 妫鏌ョ敤鎴锋槸鍚︽湁鏌愪釜鎿嶄綔鐨勬潈闄愩 褰撳弬鏁颁负 true鏃讹紙榛樿锛夛紝濡傛灉涔嬪墠鎵ц浜嗚闂鏌ユ搷浣滐紝 鍏剁粨鏋滃皢鐩存帴杩斿洖涔嬪墠鐨勯偅涓闂鏌ユ搷浣滅殑缁撴灉銆 濡傛灉鍙傛暟涓篺alse锛屾鏂规硶灏嗗缁堣皟鐢CAuthManager::checkAccess 鏉ヨ幏寰楁渶鏂扮殑璁块棶鐨勭粨鏋溿傝娉ㄦ剰杩欎釜缂撳瓨鍙湁鍦ㄥ悓鏍风殑 璇锋眰涓嬫湁鏁堛 |
{return} | boolean | 姝ょ敤鎴锋槸鍚﹁兘鎵ц鏌愪簺鎿嶄綔銆 |
public function checkAccess($operation,$params=array(),$allowCaching=true)
{
if($allowCaching && $params===array() && isset($this->_access[$operation]))
return $this->_access[$operation];
else
return $this->_access[$operation]=Yii::app()->getAuthManager()->checkAccess($operation,$this->getId(),$params);
}
妫鏌ョ敤鎴风殑鎵ц鏉冮檺銆
public void clearStates()
|
public function clearStates()
{
$keys=array_keys($_SESSION);
$prefix=$this->getStateKeyPrefix();
$n=strlen($prefix);
foreach($keys as $key)
{
if(!strncmp($key,$prefix,$n))
unset($_SESSION[$key]);
}
}
浠庢寔涔呭瓨鍌ㄤ腑娓呴櫎鎵鏈夌殑鐢ㄦ埛韬唤淇℃伅銆 姝ゆ柟娉曞皢娓呴櫎鐢setState瀛樺偍鐨勬暟鎹
protected CHttpCookie createIdentityCookie(string $name)
| ||
$name | string | cookie鍚嶇О |
{return} | CHttpCookie | 瀛樺偍韬唤淇℃伅鐨刢ookie |
protected function createIdentityCookie($name)
{
$cookie=new CHttpCookie($name,'');
if(is_array($this->identityCookie))
{
foreach($this->identityCookie as $name=>$value)
$cookie->$name=$value;
}
return $cookie;
}
鍒涘缓涓涓猚ookie鏉ュ瓨鍌ㄦ爣璇嗙淇℃伅銆
public mixed getFlash(string $key, mixed $defaultValue=NULL, boolean $delete=true)
| ||
$key | string | 鎻愮ず淇℃伅鐨勯敭鍚 |
$defaultValue | mixed | 濡傛灉鎻愮ず淇℃伅澶辨晥琚繑鍥炵殑鍊笺 |
$delete | boolean | 鎻愮ず淇℃伅琚闂悗鏄惁鍒犻櫎鎺夈 榛樿涓簍rue |
{return} | mixed | 鎻愮ず淇℃伅 |
public function getFlash($key,$defaultValue=null,$delete=true)
{
$value=$this->getState(self::FLASH_KEY_PREFIX.$key,$defaultValue);
if($delete)
$this->setFlash($key,null);
return $value;
}
杩斿洖涓涓彁绀轰俊鎭 涓涓彁绀轰俊鎭殑浠呬粎鍦ㄥ綋鍓嶈姹傚拰涓嬩竴涓姹備腑鏈夋晥銆
public array getFlashes(boolean $delete=true)
| ||
$delete | boolean | 褰撴彁绀轰俊鎭璇ユ柟娉曡皟鐢ㄥ悗鏄惁瑕佸垹闄ゆ帀銆 |
{return} | array | 鎻愮ず淇℃伅锛坘ey=>message锛 |
public function getFlashes($delete=true)
{
$flashes=array();
$prefix=$this->getStateKeyPrefix().self::FLASH_KEY_PREFIX;
$keys=array_keys($_SESSION);
$n=strlen($prefix);
foreach($keys as $key)
{
if(!strncmp($key,$prefix,$n))
{
$flashes[substr($key,$n)]=$_SESSION[$key];
if($delete)
unset($_SESSION[$key]);
}
}
if($delete)
$this->setState(self::FLASH_COUNTERS,array());
return $flashes;
}
杩斿洖鎵鏈夌殑鎻愮ず淇℃伅銆 姝ゆ柟娉曚笌getFlash鏂规硶绫讳技锛 涓嶈繃瀹冭繑鍥炵殑鏄墍鏈夊綋鍓嶆湁鏁堢殑鎻愮ず淇℃伅銆
public mixed getId()
| ||
{return} | mixed | 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄潵瀹剧敤鎴枫 |
public function getId()
{
return $this->getState('__id');
}
public boolean getIsGuest()
| ||
{return} | boolean | 褰撳墠搴旂敤绋嬪簭鐢ㄦ埛鏄惁鏄竴涓潵瀹剧敤鎴枫 |
public function getIsGuest()
{
return $this->getState('__id')===null;
}
public string getName()
| ||
{return} | string | 鐢ㄦ埛鍚嶇О锛屽鏋滅敤鎴锋病鏈夌櫥褰曪紝瀹冨皢杩斿洖guestName銆 |
public function getName()
{
if(($name=$this->getState('__name'))!==null)
return $name;
else
return $this->guestName;
}
杩斿洖鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈 杩欎釜鏄富瑕佺敤浜庢樉绀虹殑鍞竴鐨勬爣璇嗙銆
public string getReturnUrl(string $defaultUrl=NULL)
| ||
$defaultUrl | string | 榛樿鐨勮杩斿洖鐨刄RL锛屽鏋滀箣鍓嶆病鏈夎缃殑璇濄傚鏋滄槸null锛 搴旂敤鍏ュ彛鐨刄RL灏嗚浣滀负榛樿杩斿洖鐨刄RL銆 |
{return} | string | 鐢ㄦ埛鐧诲綍鍚庤杩斿洖鐨刄RL銆 |
public function getReturnUrl($defaultUrl=null)
{
return $this->getState('__returnUrl', $defaultUrl===null ? Yii::app()->getRequest()->getScriptUrl() : CHtml::normalizeUrl($defaultUrl));
}
杩斿洖鐢ㄦ埛鎴愬姛鐧婚檰鍚庡簲璇ヨ烦杞殑URL銆 杩欎釜灞炴у父鐢ㄤ簬鐧婚檰鍔ㄤ綔銆傚鏋滄垚鍔熺櫥闄嗭紝灏嗚鍙栬繖涓睘鎬э紝 鐒跺悗鐢ㄥ畠鏉ラ噸瀹氬悜鐢ㄦ埛鐨勬祻瑙堝櫒銆
鍙傝
public mixed getState(string $key, mixed $defaultValue=NULL)
| ||
$key | string | 鍙橀噺鍚 |
$defaultValue | mixed | 榛樿鍊 |
{return} | mixed | 鍙橀噺鐨勫笺傚鏋滃湪浼氳瘽涓笉瀛樺湪锛 鎻愪緵鐨勯粯璁ゅ煎皢琚繑鍥炪 |
public function getState($key,$defaultValue=null)
{
$key=$this->getStateKeyPrefix().$key;
return isset($_SESSION[$key]) ? $_SESSION[$key] : $defaultValue;
}
杩斿洖鐢ㄦ埛浼氳瘽涓寚瀹氬彉閲忕殑鍊笺
CWebUser瀛愮被浣跨敤姝ゅ姛鑳借璁★紝
鏄笇鏈涙洿澶氱殑鐢ㄦ埛淇℃伅瀛樺偍鍦ㄧ敤鎴蜂細璇濅腑銆
濡傛灉閫氳繃浣跨敤setState灏嗗彉閲忓瓨鍌ㄥ湪鐢ㄦ埛浼氳瘽涓紝
鍙互浣跨敤姝ゅ姛鑳芥绱€
鍙傝
public string getStateKeyPrefix()
| ||
{return} | string | 瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆 |
public function getStateKeyPrefix()
{
if($this->_keyPrefix!==null)
return $this->_keyPrefix;
else
return $this->_keyPrefix=md5('Yii.'.get_class($this).'.'.Yii::app()->getId());
}
public boolean hasFlash(string $key)
| ||
$key | string | 鎻愮ず淇℃伅鐨勯敭鍚 |
{return} | boolean | 鏌愪釜鎸囧畾鐨勬爣璇嗙鏄惁瀛樺湪 |
public function hasFlash($key)
{
return $this->getFlash($key, null, false)!==null;
}
public boolean hasState(string $key)
| ||
$key | string | 鐘舵佸悕瀛 |
{return} | boolean | 鏄惁鏈変竴涓寚瀹氬悕绉扮殑浼氳瘽鍙橀噺銆 |
public function hasState($key)
{
$key=$this->getStateKeyPrefix().$key;
return isset($_SESSION[$key]);
}
杩斿洖鍦ㄤ細璇濅腑鏄惁鏈変竴涓壒瀹氬悕绉扮殑浼氳瘽鍙橀噺銆
public void init()
|
public function init()
{
parent::init();
Yii::app()->getSession()->open();
if($this->getIsGuest() && $this->allowAutoLogin)
$this->restoreFromCookie();
else if($this->autoRenewCookie && $this->allowAutoLogin)
$this->renewCookie();
if($this->autoUpdateFlash)
$this->updateFlash();
$this->updateAuthStatus();
}
鍒濆鍖栧簲鐢ㄧ粍浠躲 姝ゆ柟娉曢氳繃鍚姩浼氳瘽鏉ラ噸鍐欑埗绫荤殑瀹炵幇锛 鎵ц鍩轰簬cookie鐨勮韩浠借璇侊紝濡傛灉鍚敤锛屽垯鏇存柊鎻愮ず鍙橀噺銆
protected void loadIdentityStates(array $states)
| ||
$states | array | 韬唤淇℃伅鏁扮粍 |
protected function loadIdentityStates($states)
{
$names=array();
if(is_array($states))
{
foreach($states as $name=>$value)
{
$this->setState($name,$value);
$names[$name]=true;
}
}
$this->setState(self::STATES_VAR,$names);
}
浠庝竴涓暟缁勫姞杞借韩浠戒俊鎭苟淇濆瓨鍒版寔涔呯殑瀛樺偍涓
public boolean login(IUserIdentity $identity, integer $duration=0)
| ||
$identity | IUserIdentity | 鐢ㄦ埛鐨勮韩浠戒俊鎭紙宸茬粡璁よ瘉杩囩殑锛 |
$duration | integer | 鐢ㄦ埛淇濇寔鐧婚檰鐘舵佺殑绉掓暟銆傞粯璁や负0锛屾剰鍛崇潃鐧婚檰鐘舵佹寔缁埌鐢ㄦ埛鍏抽棴娴忚鍣ㄣ 濡傛灉澶т簬0锛屽皢鐢ㄤ簬鍩轰簬cookie鐧婚檰銆傚湪杩欑鎯呭喌涓嬶紝allowAutoLogin 蹇呴』璁剧疆涓簍rue锛屽惁鍒欏皢寮曞彂寮傚父銆 |
{return} | boolean | 鐢ㄦ埛鏄惁鐧诲綍銆 |
public function login($identity,$duration=0)
{
$id=$identity->getId();
$states=$identity->getPersistentStates();
if($this->beforeLogin($id,$states,false))
{
$this->changeIdentity($id,$identity->getName(),$states);
if($duration>0)
{
if($this->allowAutoLogin)
$this->saveToCookie($duration);
else
throw new CException(Yii::t('yii','{class}.allowAutoLogin must be set true in order to use cookie-based authentication.',
array('{class}'=>get_class($this))));
}
$this->afterLogin(false);
}
return !$this->getIsGuest();
}
鐢ㄦ埛鐧诲綍銆
鍦ㄧ敤鎴蜂細璇濇湡闂达紝鐢ㄦ埛鐨勮韩浠戒俊鎭皢琚寔涔呯殑淇濆瓨銆
榛樿鎯呭喌涓嬶紝瀛樺偍鏄畝鍗曠殑浼氳瘽瀛樺偍銆
濡傛灉duration鍙傛暟澶т簬0锛 灏嗙敓鎴愪竴涓猚ookie锛
涓轰互鍚庡熀浜巆ookie鐧诲綍鍋氬噯澶囥
濡傛灉浣犳兂鐢ㄦ埛鍙互鍩轰簬cookie鐧诲綍鐨勮瘽锛
娉ㄦ剰, 浣犲繀椤昏缃allowAutoLogin涓簍rue銆
public void loginRequired()
|
public function loginRequired()
{
$app=Yii::app();
$request=$app->getRequest();
if(!$request->getIsAjaxRequest())
$this->setReturnUrl($request->getUrl());
elseif(isset($this->loginRequiredAjaxResponse))
{
echo $this->loginRequiredAjaxResponse;
Yii::app()->end();
}
if(($url=$this->loginUrl)!==null)
{
if(is_array($url))
{
$route=isset($url[0]) ? $url[0] : $app->defaultController;
$url=$app->createUrl($route,array_splice($url,1));
}
$request->redirect($url);
}
else
throw new CHttpException(403,Yii::t('yii','Login Required'));
}
閲嶅畾鍚戠敤鎴锋祻瑙堝櫒鍒扮櫥闄嗛〉闈€ 閲嶅畾鍚戜箣鍓嶏紝褰撳墠鐨刄RL锛堝鏋滀笉鏄竴涓狝JAX url锛夊皢琚繚瀛樺湪 returnUrl涓紝浠ヤ究鐢ㄦ埛鐨勬祻瑙堝櫒鍙兘浼氳閲嶅畾 鍚戝幓鍒版垚鍔熺櫥褰曞悗鐨勯〉闈€傜‘淇濅綘璁剧疆浜loginUrl 浣跨敤鎴疯皟鐢ㄦ鏂规硶鍚庡彲浠ヨ閲嶅畾鍚 鍒版寚瀹氱殑鐧诲綍鍦板潃璋冪敤姝ゆ柟娉曞悗锛 灏嗙粓姝㈠綋鍓嶇殑璇綍澶勭悊銆
public void logout(boolean $destroySession=true)
| ||
$destroySession | boolean | 鏄惁娉ㄩ攢鍏ㄩ儴鐨勪細璇濄傞粯璁や负true銆傚鏋滄槸false锛 鍒clearStates浼氳璋冪敤锛屽皢鍙垹闄ょ敱setState璁剧疆鐨勬暟鎹 |
public function logout($destroySession=true)
{
if($this->beforeLogout())
{
if($this->allowAutoLogin)
{
Yii::app()->getRequest()->getCookies()->remove($this->getStateKeyPrefix());
if($this->identityCookie!==null)
{
$cookie=$this->createIdentityCookie($this->getStateKeyPrefix());
$cookie->value=null;
$cookie->expire=0;
Yii::app()->getRequest()->getCookies()->add($cookie->name,$cookie);
}
}
if($destroySession)
Yii::app()->getSession()->destroy();
else
$this->clearStates();
$this->afterLogout();
}
}
鐧诲嚭褰撳墠鐢ㄦ埛銆 杩欎釜鏂规硶灏嗙Щ闄ょ浉鍏崇殑璁よ瘉浼氳瘽鏁版嵁銆 濡傛灉鍙傛暟涓簍rue锛屽叏閮ㄧ殑浼氳瘽淇℃伅灏嗚娉ㄩ攢銆
protected void renewCookie()
|
protected function renewCookie()
{
$request=Yii::app()->getRequest();
$cookies=$request->getCookies();
$cookie=$cookies->itemAt($this->getStateKeyPrefix());
if($cookie && !empty($cookie->value) && ($data=Yii::app()->getSecurityManager()->validateData($cookie->value))!==false)
{
$data=@unserialize($data);
if(is_array($data) && isset($data[0],$data[1],$data[2],$data[3]))
{
$cookie->expire=time()+$data[2];
$cookies->add($cookie->name,$cookie);
}
}
}
鏇存柊瀛樺偍韬唤鐨刢ookie銆 姝ゆ柟娉曞皢瀛樺偍韬唤鐨刢ookie鐨勮繃鏈熸椂闂磋缃 涓哄綋鍓嶇殑鏃堕棿鍔犱笂鍘熷厛鎸囧畾鐨刢ookie鐨勬寔缁椂闂淬
protected void restoreFromCookie()
|
protected function restoreFromCookie()
{
$app=Yii::app();
$request=$app->getRequest();
$cookie=$request->getCookies()->itemAt($this->getStateKeyPrefix());
if($cookie && !empty($cookie->value) && ($data=$app->getSecurityManager()->validateData($cookie->value))!==false)
{
$data=@unserialize($data);
if(is_array($data) && isset($data[0],$data[1],$data[2],$data[3]))
{
list($id,$name,$duration,$states)=$data;
if($this->beforeLogin($id,$states,true))
{
$this->changeIdentity($id,$name,$states);
if($this->autoRenewCookie)
{
$cookie->expire=time()+$duration;
$request->getCookies()->add($cookie->name,$cookie);
}
$this->afterLogin(true);
}
}
}
}
鐢ㄤ粠cookie鑾峰彇鐨勪俊鎭~鍏呭埌褰撳墠鐨勭敤鎴峰璞° 姝ゆ柟娉曠敤浜庤嚜鍔ㄧ櫥闄嗭紙allowAutoLogin锛夊惎鐢ㄦ椂銆 浠巆ookie涓洖鏀剁敤鎴疯韩浠戒俊鎭 浣跨敤瓒冲鐨勫畨鍏ㄦ帾鏂斤紝浠ラ槻姝ookie鏁版嵁琚鏀广
鍙傝
protected array saveIdentityStates()
| ||
{return} | array | 韬唤淇℃伅鏁扮粍 |
protected function saveIdentityStates()
{
$states=array();
foreach($this->getState(self::STATES_VAR,array()) as $name=>$dummy)
$states[$name]=$this->getState($name);
return $states;
}
浠庢寔涔呭瓨鍌ㄤ腑鎵惧洖淇℃伅骞跺皢瀹冧滑瀛樺偍鍒颁竴涓暟缁勪腑
protected void saveToCookie(integer $duration)
| ||
$duration | integer | 鐢ㄦ埛淇濇寔鐧婚檰鐘舵佺殑绉掓暟銆傞粯璁や负0锛屾剰鍛崇潃鐧婚檰鐘舵佹寔缁埌鐢ㄦ埛鍏抽棴娴忚鍣ㄣ |
protected function saveToCookie($duration)
{
$app=Yii::app();
$cookie=$this->createIdentityCookie($this->getStateKeyPrefix());
$cookie->expire=time()+$duration;
$data=array(
$this->getId(),
$this->getName(),
$duration,
$this->saveIdentityStates(),
);
$cookie->value=$app->getSecurityManager()->hashData(serialize($data));
$app->getRequest()->getCookies()->add($cookie->name,$cookie);
}
淇濆瓨蹇呰鐨勭敤鎴风殑鏁版嵁鍒颁竴涓猚ookie銆 姝ゆ柟娉曠敤浜庤嚜鍔ㄧ櫥闄嗭紙allowAutoLogin锛夊惎鐢ㄦ椂銆 姝ゆ柟娉曚繚瀛樼敤鎴稩D锛岀敤鎴峰悕锛屽叾瀹冪殑韬唤淇℃伅鍜屼竴涓湁鏁堢殑key鍒癱ookie銆 杩欎簺淇℃伅鍦ㄧ敤鎴蜂笅娆¤闂簲鐢ㄦ椂璁よ瘉鏃朵娇鐢ㄣ
public void setFlash(string $key, mixed $value, mixed $defaultValue=NULL)
| ||
$key | string | 鎻愮ず淇℃伅鐨勯敭鍚 |
$value | mixed | 鎻愮ず淇℃伅 |
$defaultValue | mixed | 濡傛灉杩欎釜鍊煎拰鎻愮ず淇℃伅鐨勫肩浉鍚岋紝 鎻愮ず淇℃伅灏嗚鍒犻櫎銆傦紙鍥犳锛屼綘鍙互浣跨敤setFlash('key',null)鏉ュ垹闄ゆ彁绀轰俊鎭傦級 |
public function setFlash($key,$value,$defaultValue=null)
{
$this->setState(self::FLASH_KEY_PREFIX.$key,$value,$defaultValue);
$counters=$this->getState(self::FLASH_COUNTERS,array());
if($value===$defaultValue)
unset($counters[$key]);
else
$counters[$key]=0;
$this->setState(self::FLASH_COUNTERS,$counters,array());
}
瀛樺偍涓涓彁绀轰俊鎭 涓涓彁绀轰俊鎭粎鍦ㄥ綋鍓嶈姹傚拰涓嬫璇锋眰涓湁鏁堛
public void setId(mixed $value)
| ||
$value | mixed | 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄竴涓潵瀹剧敤鎴枫 |
public function setId($value)
{
$this->setState('__id',$value);
}
public void setName(string $value)
| ||
$value | string | 鐢ㄦ埛鍚嶃 |
public function setName($value)
{
$this->setState('__name',$value);
}
璁剧疆鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈
鍙傝
public void setReturnUrl(string $value)
| ||
$value | string | 鐢ㄦ埛鐧诲綍鍚庡簲璇ヨ烦杞殑URL銆 |
public function setReturnUrl($value)
{
$this->setState('__returnUrl',$value);
}
public void setState(string $key, mixed $value, mixed $defaultValue=NULL)
| ||
$key | string | 鍙橀噺鍚 |
$value | mixed | 鍙橀噺鍊 |
$defaultValue | mixed | 榛樿鍊笺傚鏋$value===$defaultValue锛 鍙橀噺灏嗕粠浼氳瘽涓Щ闄 |
public function setState($key,$value,$defaultValue=null)
{
$key=$this->getStateKeyPrefix().$key;
if($value===$defaultValue)
unset($_SESSION[$key]);
else
$_SESSION[$key]=$value;
}
鍦ㄧ敤鎴蜂細璇濅腑瀛樺偍涓涓彉閲忋
CWebUser瀛愮被浣跨敤姝ゅ姛鑳借璁★紝
鏄笇鏈涙洿澶氱殑鐢ㄦ埛淇℃伅瀛樺偍鍦ㄧ敤鎴蜂細璇濅腑銆
閫氳繃姝ゆ柟娉曞瓨鍌ㄤ竴涓彉閲忥紝鍙橀噺鍙互鐢
getState鍙栧嚭銆傚彉閲忓湪鏁翠釜鐢ㄦ埛浼氳瘽鏈熼棿
鐨勯〉闈㈣姹備腑鏄寔涔呯殑銆
鍙傝
public void setStateKeyPrefix(string $value)
| ||
$value | string | 瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆 |
public function setStateKeyPrefix($value)
{
$this->_keyPrefix=$value;
}
protected void updateAuthStatus()
|
protected function updateAuthStatus()
{
if($this->authTimeout!==null && !$this->getIsGuest())
{
$expires=$this->getState(self::AUTH_TIMEOUT_VAR);
if ($expires!==null && $expires < time())
$this->logout(false);
else
$this->setState(self::AUTH_TIMEOUT_VAR,time()+$this->authTimeout);
}
}
鏍规嵁authTimeout鏉ユ洿鏂拌璇佺姸鎬併 濡傛灉鐢ㄦ埛鍦authTimeout璁剧疆鐨勭鏁版湡闂村唴涓嶆椿鍔紝 浠栧皢鑷姩鐧诲嚭銆
protected void updateFlash()
|
protected function updateFlash()
{
$counters=$this->getState(self::FLASH_COUNTERS);
if(!is_array($counters))
return;
foreach($counters as $key=>$count)
{
if($count)
{
unset($counters[$key]);
$this->setState(self::FLASH_KEY_PREFIX.$key,null);
}
else
$counters[$key]++;
}
$this->setState(self::FLASH_COUNTERS,$counters,array());
}
鏇存柊鎻愮ず淇℃伅鐨勫唴閮ㄨ鏁板櫒銆 姝ゆ柟娉曟槸鍐呴儴浣跨敤鐨勶紝鐢ㄤ簬CWebApplication 鏉ヤ繚鎸佹彁绀轰俊鎭殑鍙敤鎬с