Yii Framework v1.1.10 绫诲弬鑰

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浠h〃涓涓猈eb搴旂敤绋嬪簭鐨勬寔涔呯姸鎬併

CWebUser浣滀负ID涓簎ser鐨勪竴涓簲鐢ㄧ▼搴忕粍浠躲 鍥犳锛屽湪浠讳綍鍦版柟閮借兘閫氳繃Yii::app()->user 璁块棶鐢ㄦ埛鐘舵併

CWebUser搴旇鍜identity 涓璧蜂娇鐢ㄥ疄鐜颁簡瀹為檯鐨勯獙璇佺畻娉曘

涓涓吀鍨嬬殑浣跨敤CWebUser鐨勮韩浠介獙璇佽繃绋嬪涓嬶細
  1. 鐢ㄦ埛鎻愪緵鎵闇鐨勪俊鎭繘琛岃韩浠介獙璇併
  2. 涓涓槸鐢辩敤鎴锋彁渚涚殑淇℃伅鍒涘缓鐨韬唤鏍囪瘑瀹炰緥
  3. 璋冪敤IUserIdentity::authenticate鏉ユ鏌ヨ韩浠芥爣璇嗘槸鍚︽湁鏁
  4. 濡傛灉鏈夋晥锛岃皟鐢CWebUser::login鐧婚檰鐢ㄦ埛锛 鐒跺悗鐢ㄦ埛娴忚鍣ㄩ噸瀹氬悜鍒returnUrl
  5. 濡傛灉鏃犳晥锛屼粠韬唤鏍囪瘑涓绱㈤敊璇唬鐮佹垨閿欒淇℃伅 鐒跺悗鏄剧ず銆


idname灞炴ч兘鏄敤鎴风殑鏍囪瘑绗︺ 鍓嶈呬富瑕佹槸鍐呴儴浣跨敤锛堝涓婚敭锛夛紝 鍚庤呯敤浜庢樉绀猴紙濡傜敤鎴峰悕锛夈id灞炴 灞炴у湪鏁翠釜鐢ㄦ埛浼氳瘽涓槸涓涓寔涔呮 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚畠鍙互鏄敤鎴峰悕锛屾垨鍒殑涓滆タ锛屽彇鍐充簬 identity class鐨勫疄鐜般

idname鍦ㄦ暣涓敤鎴蜂細鍛樹腑閮芥槸鎸佷箙鐨勩 姝ゅ锛屼竴涓韩浠芥爣璇嗗彲鑳芥湁棰濆鐨勯氳繃璋冪敤 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

灞炴ц缁

allowAutoLogin 灞炴
public boolean $allowAutoLogin;

鏄惁寮鍚熀浜巆ookie鐨勭櫥褰曪紝榛樿涓篺alse銆

authTimeout 灞炴 锛堝彲鐢ㄨ嚜 v1.1.7锛
public integer $authTimeout;

鐢ㄦ埛鐧婚檰鍚庡浜庨潪娲诲姩鐘舵佺殑瓒呮椂鏃堕棿锛堢锛夈 濡傛灉娌℃湁璁剧疆璇ュ睘鎬э紝閭d箞鍦ㄥ綋鍓嶇殑session鍒版湡鍚庣敤鎴蜂細灏嗚娉ㄩ攢 锛堝鐓CHttpSession::timeout锛夈

autoRenewCookie 灞炴 锛堝彲鐢ㄨ嚜 v1.1.0锛
public boolean $autoRenewCookie;

鏄惁鍦ㄦ瘡娆¢〉闈㈣姹傚悗鑷姩鏇存柊韬唤鏍囪瘑銆 榛樿涓篺alse銆傝繖涓睘鎬т粎褰allowAutoLogin涓簍rue鏃惰捣浣滅敤銆 褰撹灞炴т负false鏃讹紝cookie浠庣敤鎴风涓娆$櫥闄嗙殑鏃堕棿璧凤紝鍦ㄦ寚瀹氱殑鎸佺画鏃堕棿鍚庤繃鏈熴 褰撹灞炴т负true鏃讹紝cookie浠庣敤鎴锋渶鍚庝竴娆$櫥闄嗙殑鏃堕棿璧凤紝 鍦ㄦ寚瀹氱殑鎸佺画鏃堕棿鍚庤繃鏈熴

鍙傝

autoUpdateFlash 灞炴 锛堝彲鐢ㄨ嚜 v1.1.7锛
public boolean $autoUpdateFlash;

鏄惁鑷姩鏇存柊鎻愮ず淇℃伅鐨勬湁鏁堟с 榛樿涓簍rue锛屾剰鍛崇潃鎻愮ず淇℃伅浠呭湪褰撳墠璇锋眰鍜屼笅涓娆¤姹傛椂鏈夋晥銆 濡傛灉杩欎釜璁剧疆涓篺alse锛屼綘蹇呴』纭繚涓涓彁绀轰俊鎭湪浣跨敤鍚庡垹闄ゃ 锛堝彲浠ヨ皟鐢getFlash骞朵笖璁剧疆绗笁涓弬鏁颁负true鏉ュ畬鎴愶級銆

flashes 灞炴 鍙 锛堝彲鐢ㄨ嚜 v1.1.3锛
public array getFlashes(boolean $delete=true)

杩斿洖鎵鏈夌殑鎻愮ず淇℃伅銆 姝ゆ柟娉曚笌getFlash鏂规硶绫讳技锛 涓嶈繃瀹冭繑鍥炵殑鏄墍鏈夊綋鍓嶆湁鏁堢殑鎻愮ず淇℃伅銆

guestName 灞炴
public string $guestName;

鏉ュ鐢ㄦ埛鐨勫悕绉帮紝榛樿涓衡淕uest鈥濄 杩欎釜灞炴х敤浜getName鏂规硶锛屽綋褰撳墠鐢ㄦ埛涓烘潵瀹剧敤鎴锋椂(鏈璇佺殑)銆

id 灞炴
public mixed getId()
public void setId(mixed $value)

鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄潵瀹剧敤鎴枫

identityCookie 灞炴
public array $identityCookie;

鐢ㄦ潵鍒濆鍖栬韩浠絚ookie鐨勫睘鎬у硷紙閿悕锛嶉敭鍊硷級 涓浜CHttpCookie灞炴т細琚垵濮嬪寲銆 杩欎釜灞炴т粎褰allowAutoLogin涓簍rue鏃舵湁鏁堛

isGuest 灞炴 鍙
public boolean getIsGuest()

褰撳墠搴旂敤绋嬪簭鐢ㄦ埛鏄惁鏄竴涓潵瀹剧敤鎴枫

loginRequiredAjaxResponse 灞炴 锛堝彲鐢ㄨ嚜 v1.1.9锛
public string $loginRequiredAjaxResponse;

褰撲娇鐢╝jax鏃剁敤鎴风殑浼氳瘽瓒呮椂锛岃繖绉嶆儏鍐典笅杈撳嚭鍊笺 褰撳彂鍑鸿姹傛椂锛岀敤鎴蜂細璇濆凡缁忚秴鏃讹紝loginRequired浼氶噸瀹氬悜loginUrl鍘荤櫥褰曘 濡傛灉鍦╝jax璇锋眰涓嬪彂鐢燂紝浼氳繑鍥炴暣涓櫥褰曢〉闈㈢殑銆傝繖涓細瀵艰嚧 涓浜涢潪甯镐笉濂界殑鐢ㄦ埛浣撻獙锛屽洜涓烘湡鏈涜繑鍥炵殑鏄痡son鏁扮粍锛屾垨鑰呮槸棰勫畾涔夌殑瀛楃涓诧紝鍥犱负杩欑鎯呭喌涓嬪繀椤昏蹇界暐鐧诲綍椤甸潰銆 涓轰簡瑙e喅杩欎釜闂锛屽彲浠ヨ缃繖涓睘鎬т负鏈熸湜鐨勮繑鍥炲笺

濡傛灉璁剧疆浜嗚繖涓睘鎬э紝褰撲娇鐢╝jax锛岀敤鎴蜂細璇濊秴鏃朵簡锛岄偅涔堝氨浼氳繑鍥炶繖涓笺

鍙傝

loginUrl 灞炴
public string|array $loginUrl;

鐢ㄤ簬鐧诲綍鐨刄RL銆傚鏋滀娇鐢ㄦ暟缁勶紝绗竴涓厓绱犲簲璇ヤ负鐧诲綍鍔ㄤ綔鐨勮矾鐢憋紝 鍏跺畠鐨勬槸閿悕锛嶉敭鍊煎舰寮忕殑鐨凣ET鍙傛暟 鏉ョ粍鎴愮櫥闄嗙殑URL锛堝锛宎rray('/site/login')锛夈傚鏋滆繖涓睘鎬т负null锛 鍒欑敤涓涓403 HTTP 寮傚父鏉ヤ唬鏇裤

name 灞炴
public string getName()
public void setName(string $value)

杩斿洖鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈 杩欎釜鏄富瑕佺敤浜庢樉绀虹殑鍞竴鐨勬爣璇嗙銆

returnUrl 灞炴
public string getReturnUrl(string $defaultUrl=NULL)
public void setReturnUrl(string $value)

杩斿洖鐢ㄦ埛鎴愬姛鐧婚檰鍚庡簲璇ヨ烦杞殑URL銆 杩欎釜灞炴у父鐢ㄤ簬鐧婚檰鍔ㄤ綔銆傚鏋滄垚鍔熺櫥闄嗭紝灏嗚鍙栬繖涓睘鎬э紝 鐒跺悗鐢ㄥ畠鏉ラ噸瀹氬悜鐢ㄦ埛鐨勬祻瑙堝櫒銆

鍙傝

stateKeyPrefix 灞炴
public string getStateKeyPrefix()
public void setStateKeyPrefix(string $value)

瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆

鏂规硶璇︾粏

__get() 鏂规硶
public mixed __get(string $name)
$name string 灞炴у悕瀛
{return} mixed 灞炴у
婧愮爜锛 framework/web/auth/CWebUser.php#136 (鏄剧ず)
public function __get($name)
{
    if(
$this->hasState($name))
        return 
$this->getState($name);
    else
        return 
parent::__get($name);
}

PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬佸綋浣滃睘鎬ф潵璁块棶銆

__isset() 鏂规硶
public boolean __isset(string $name)
$name string 灞炴у悕瀛
{return} boolean
婧愮爜锛 framework/web/auth/CWebUser.php#164 (鏄剧ず)
public function __isset($name)
{
    if(
$this->hasState($name))
        return 
$this->getState($name)!==null;
    else
        return 
parent::__isset($name);
}

PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬佸綋浣渘ull鏉ユ娴嬨

__set() 鏂规硶
public void __set(string $name, mixed $value)
$name string 灞炴у悕瀛
$value mixed 灞炴у
婧愮爜锛 framework/web/auth/CWebUser.php#150 (鏄剧ず)
public function __set($name,$value)
{
    if(
$this->hasState($name))
        
$this->setState($name,$value);
    else
        
parent::__set($name,$value);
}

PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬佸綋浣滃睘鎬ф潵璁剧疆銆

__unset() 鏂规硶
public void __unset(string $name)
$name string 灞炴у悕瀛
婧愮爜锛 framework/web/auth/CWebUser.php#178 (鏄剧ず)
public function __unset($name)
{
    if(
$this->hasState($name))
        
$this->setState($name,null);
    else
        
parent::__unset($name);
}

PHP榄旀湳鏂规硶銆 瑕嗙洊杩欎釜鏂规硶鏄负浜嗚兘澶燂紝鍙互灏嗘寔缁姸鎬侀噸缃

afterLogin() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.3锛
protected void afterLogin(boolean $fromCookie)
$fromCookie boolean 鏄惁鏄熀浜巆ookie鐧婚檰鐨勩
婧愮爜锛 framework/web/auth/CWebUser.php#403 (鏄剧ず)
protected function afterLogin($fromCookie)
{
}

鐢ㄦ埛鎴愬姛鐧诲綍鍚庤璋冪敤鐨勬柟娉曘 浣犲彲浠ヨ鐩栬繖涓柟娉曞仛涓浜涘叾瀹冨鐞嗭紙濡傦紝璁板綍鐢ㄦ埛鐨勭櫥闄唅p鍜岀櫥闄嗘椂闂达紝 鍔犺浇鐢ㄦ埛鐨勪俊鎭瓑锛夈

afterLogout() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.3锛
protected void afterLogout()
婧愮爜锛 framework/web/auth/CWebUser.php#425 (鏄剧ず)
protected function afterLogout()
{
}

鐢ㄦ埛鐧诲嚭鍚庤璋冪敤鐨勬柟娉曘 浣犲彲浠ラ噸鍐欒鏂规硶鏉ュ仛涓浜涢澶栫殑娓呴櫎鐢ㄦ埛淇℃伅宸ヤ綔銆

beforeLogin() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.3锛
protected boolean beforeLogin(mixed $id, array $states, boolean $fromCookie)
$id mixed 鐢ㄦ埛ID銆傝繖涓拰getId()鏂规硶杩斿洖鐨勬槸涓鏍风殑銆
$states array 鐢ㄦ埛鏍囪瘑锛坲ser identity锛夋彁渚涚殑閿悕锛嶉敭鍊煎舰寮忕殑鏁扮粍銆
$fromCookie boolean 鏄惁涓哄熀浜巆ookie鐨勭櫥褰
{return} boolean 鐢ㄦ埛鏄惁鍙互鐧诲綍
婧愮爜锛 framework/web/auth/CWebUser.php#391 (鏄剧ず)
protected function beforeLogin($id,$states,$fromCookie)
{
    return 
true;
}

鍦ㄧ敤鎴风櫥褰曢偅涓鏃跺埢鍓嶈璋冪敤鐨勬柟娉曘 浣犲彲浠ラ噸鍐欒鏂规硶鏉ュ仛涓浜涢澶栫殑瀹夊叏妫鏌ャ 渚嬪, 褰撳熀浜巆ookie鐧诲綍鏃, 浣犲彲鑳芥兂瑕侀獙璇佷繚瀛樺湪鐢ㄦ埛ID瀵瑰簲鐘舵佺殑闅忔満浠ょ墝 鏄惁鍙互鍦 鏁版嵁搴撲腑鎵惧埌銆傝繖灏嗛槻姝㈤粦瀹吉閫燾ookie锛 鍗充娇浠栦滑鑾峰彇浜嗘湇鍔″櫒绉侀挜銆

beforeLogout() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.3锛
protected boolean beforeLogout()
{return} boolean 鏄惁娉ㄩ攢鐢ㄦ埛
婧愮爜锛 framework/web/auth/CWebUser.php#415 (鏄剧ず)
protected function beforeLogout()
{
    return 
true;
}

褰撶敤鎴疯皟鐢logout娉ㄩ攢鏃讹紝灏嗚皟鐢ㄨ鏂规硶銆 濡傛灉璇ユ柟娉曡繑鍥瀎alse锛屾敞閿鍔ㄤ綔灏嗚鍙栨秷銆 浣犲彲浠ラ噸鍐欒鏂规硶鍦ㄧ敤鎴锋敞閿鍓嶆潵 澶勭悊涓浜涢澶栫殑宸ヤ綔銆

changeIdentity() 鏂规硶
protected void changeIdentity(mixed $id, string $name, array $states)
$id mixed 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗
$name string 鐢ㄦ埛鐨勬樉绀虹殑鍚嶇О
$states array 韬唤淇℃伅鏁扮粍
婧愮爜锛 framework/web/auth/CWebUser.php#696 (鏄剧ず)
protected function changeIdentity($id,$name,$states)
{
    
Yii::app()->getSession()->regenerateID();
    
$this->setId($id);
    
$this->setName($name);
    
$this->loadIdentityStates($states);
}

鐢ㄦ寚瀹氱殑鏍囪瘑绗︿俊鎭潵鏀瑰彉褰撳墠鐨勭敤鎴枫 璇ユ柟娉曡loginrestoreFromCookie 璋冪敤锛屽湪褰撳墠鐢ㄦ埛闇瑕佸~鍏呰韩浠戒俊鎭椂銆 娲剧敓绫诲彲浠ラ噸鍐欒鏂规硶锛 鏉ヨ幏鍙栨洿澶氱殑鐢ㄦ埛鐩稿叧淇℃伅銆 纭繚棣栧厛璋冪敤鐖剁被瀹炵幇銆

checkAccess() 鏂规硶
public boolean checkAccess(string $operation, array $params=array ( ), boolean $allowCaching=true)
$operation string 闇瑕佹鏌ョ殑鎿嶄綔鍚嶇О銆
$params array 閿悕锛嶉敭鍊煎锛屽皢閫氳繃鐩稿叧鐨勪笟鍔¤鍒欐潵鍒嗛厤 缁欑敤鎴风殑浠诲姟鍜岃鑹层
$allowCaching boolean 妫鏌ョ敤鎴锋槸鍚︽湁鏌愪釜鎿嶄綔鐨勬潈闄愩 褰撳弬鏁颁负 true鏃讹紙榛樿锛夛紝濡傛灉涔嬪墠鎵ц浜嗚闂鏌ユ搷浣滐紝 鍏剁粨鏋滃皢鐩存帴杩斿洖涔嬪墠鐨勯偅涓闂鏌ユ搷浣滅殑缁撴灉銆 濡傛灉鍙傛暟涓篺alse锛屾鏂规硶灏嗗缁堣皟鐢CAuthManager::checkAccess 鏉ヨ幏寰楁渶鏂扮殑璁块棶鐨勭粨鏋溿傝娉ㄦ剰杩欎釜缂撳瓨鍙湁鍦ㄥ悓鏍风殑 璇锋眰涓嬫湁鏁堛
{return} boolean 姝ょ敤鎴锋槸鍚﹁兘鎵ц鏌愪簺鎿嶄綔銆
婧愮爜锛 framework/web/auth/CWebUser.php#789 (鏄剧ず)
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);
}

妫鏌ョ敤鎴风殑鎵ц鏉冮檺銆

clearStates() 鏂规硶
public void clearStates()
婧愮爜锛 framework/web/auth/CWebUser.php#600 (鏄剧ず)
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瀛樺偍鐨勬暟鎹

createIdentityCookie() 鏂规硶
protected CHttpCookie createIdentityCookie(string $name)
$name string cookie鍚嶇О
{return} CHttpCookie 瀛樺偍韬唤淇℃伅鐨刢ookie
婧愮爜锛 framework/web/auth/CWebUser.php#511 (鏄剧ず)
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鏉ュ瓨鍌ㄦ爣璇嗙淇℃伅銆

getFlash() 鏂规硶
public mixed getFlash(string $key, mixed $defaultValue=NULL, boolean $delete=true)
$key string 鎻愮ず淇℃伅鐨勯敭鍚
$defaultValue mixed 濡傛灉鎻愮ず淇℃伅澶辨晥琚繑鍥炵殑鍊笺
$delete boolean 鎻愮ず淇℃伅琚闂悗鏄惁鍒犻櫎鎺夈 榛樿涓簍rue
{return} mixed 鎻愮ず淇℃伅
婧愮爜锛 framework/web/auth/CWebUser.php#649 (鏄剧ず)
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;
}

杩斿洖涓涓彁绀轰俊鎭 涓涓彁绀轰俊鎭殑浠呬粎鍦ㄥ綋鍓嶈姹傚拰涓嬩竴涓姹備腑鏈夋晥銆

getFlashes() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.3锛
public array getFlashes(boolean $delete=true)
$delete boolean 褰撴彁绀轰俊鎭璇ユ柟娉曡皟鐢ㄥ悗鏄惁瑕佸垹闄ゆ帀銆
{return} array 鎻愮ず淇℃伅锛坘ey=>message锛
婧愮爜锛 framework/web/auth/CWebUser.php#620 (鏄剧ず)
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鏂规硶绫讳技锛 涓嶈繃瀹冭繑鍥炵殑鏄墍鏈夊綋鍓嶆湁鏁堢殑鎻愮ず淇℃伅銆

getId() 鏂规硶
public mixed getId()
{return} mixed 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄潵瀹剧敤鎴枫
婧愮爜锛 framework/web/auth/CWebUser.php#285 (鏄剧ず)
public function getId()
{
    return 
$this->getState('__id');
}

getIsGuest() 鏂规硶
public boolean getIsGuest()
{return} boolean 褰撳墠搴旂敤绋嬪簭鐢ㄦ埛鏄惁鏄竴涓潵瀹剧敤鎴枫
婧愮爜锛 framework/web/auth/CWebUser.php#277 (鏄剧ず)
public function getIsGuest()
{
    return 
$this->getState('__id')===null;
}

getName() 鏂规硶
public string getName()
{return} string 鐢ㄦ埛鍚嶇О锛屽鏋滅敤鎴锋病鏈夌櫥褰曪紝瀹冨皢杩斿洖guestName
婧愮爜锛 framework/web/auth/CWebUser.php#303 (鏄剧ず)
public function getName()
{
    if((
$name=$this->getState('__name'))!==null)
        return 
$name;
    else
        return 
$this->guestName;
}

杩斿洖鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈 杩欎釜鏄富瑕佺敤浜庢樉绀虹殑鍞竴鐨勬爣璇嗙銆

getReturnUrl() 鏂规硶
public string getReturnUrl(string $defaultUrl=NULL)
$defaultUrl string 榛樿鐨勮杩斿洖鐨刄RL锛屽鏋滀箣鍓嶆病鏈夎缃殑璇濄傚鏋滄槸null锛 搴旂敤鍏ュ彛鐨刄RL灏嗚浣滀负榛樿杩斿洖鐨刄RL銆
{return} string 鐢ㄦ埛鐧诲綍鍚庤杩斿洖鐨刄RL銆
婧愮爜锛 framework/web/auth/CWebUser.php#330 (鏄剧ず)
public function getReturnUrl($defaultUrl=null)
{
    return 
$this->getState('__returnUrl'$defaultUrl===null Yii::app()->getRequest()->getScriptUrl() : CHtml::normalizeUrl($defaultUrl));
}

杩斿洖鐢ㄦ埛鎴愬姛鐧婚檰鍚庡簲璇ヨ烦杞殑URL銆 杩欎釜灞炴у父鐢ㄤ簬鐧婚檰鍔ㄤ綔銆傚鏋滄垚鍔熺櫥闄嗭紝灏嗚鍙栬繖涓睘鎬э紝 鐒跺悗鐢ㄥ畠鏉ラ噸瀹氬悜鐢ㄦ埛鐨勬祻瑙堝櫒銆

鍙傝

getState() 鏂规硶
public mixed getState(string $key, mixed $defaultValue=NULL)
$key string 鍙橀噺鍚
$defaultValue mixed 榛樿鍊
{return} mixed 鍙橀噺鐨勫笺傚鏋滃湪浼氳瘽涓笉瀛樺湪锛 鎻愪緵鐨勯粯璁ゅ煎皢琚繑鍥炪
婧愮爜锛 framework/web/auth/CWebUser.php#555 (鏄剧ず)
public function getState($key,$defaultValue=null)
{
    
$key=$this->getStateKeyPrefix().$key;
    return isset(
$_SESSION[$key]) ? $_SESSION[$key] : $defaultValue;
}

杩斿洖鐢ㄦ埛浼氳瘽涓寚瀹氬彉閲忕殑鍊笺

CWebUser瀛愮被浣跨敤姝ゅ姛鑳借璁★紝 鏄笇鏈涙洿澶氱殑鐢ㄦ埛淇℃伅瀛樺偍鍦ㄧ敤鎴蜂細璇濅腑銆 濡傛灉閫氳繃浣跨敤setState灏嗗彉閲忓瓨鍌ㄥ湪鐢ㄦ埛浼氳瘽涓紝 鍙互浣跨敤姝ゅ姛鑳芥绱€

鍙傝

getStateKeyPrefix() 鏂规硶
public string getStateKeyPrefix()
{return} string 瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆
婧愮爜锛 framework/web/auth/CWebUser.php#525 (鏄剧ず)
public function getStateKeyPrefix()
{
    if(
$this->_keyPrefix!==null)
        return 
$this->_keyPrefix;
    else
        return 
$this->_keyPrefix=md5('Yii.'.get_class($this).'.'.Yii::app()->getId());
}

hasFlash() 鏂规硶
public boolean hasFlash(string $key)
$key string 鎻愮ず淇℃伅鐨勯敭鍚
{return} boolean 鏌愪釜鎸囧畾鐨勬爣璇嗙鏄惁瀛樺湪
婧愮爜锛 framework/web/auth/CWebUser.php#680 (鏄剧ず)
public function hasFlash($key)
{
    return 
$this->getFlash($keynullfalse)!==null;
}

hasState() 鏂规硶
public boolean hasState(string $key)
$key string 鐘舵佸悕瀛
{return} boolean 鏄惁鏈変竴涓寚瀹氬悕绉扮殑浼氳瘽鍙橀噺銆
婧愮爜锛 framework/web/auth/CWebUser.php#590 (鏄剧ず)
public function hasState($key)
{
    
$key=$this->getStateKeyPrefix().$key;
    return isset(
$_SESSION[$key]);
}

杩斿洖鍦ㄤ細璇濅腑鏄惁鏈変竴涓壒瀹氬悕绉扮殑浼氳瘽鍙橀噺銆

init() 鏂规硶
public void init()
婧愮爜锛 framework/web/auth/CWebUser.php#191 (鏄剧ず)
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鐨勮韩浠借璇侊紝濡傛灉鍚敤锛屽垯鏇存柊鎻愮ず鍙橀噺銆

loadIdentityStates() 鏂规硶
protected void loadIdentityStates(array $states)
$states array 韬唤淇℃伅鏁扮粍
婧愮爜锛 framework/web/auth/CWebUser.php#720 (鏄剧ず)
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);
}

浠庝竴涓暟缁勫姞杞借韩浠戒俊鎭苟淇濆瓨鍒版寔涔呯殑瀛樺偍涓

login() 鏂规硶
public boolean login(IUserIdentity $identity, integer $duration=0)
$identity IUserIdentity 鐢ㄦ埛鐨勮韩浠戒俊鎭紙宸茬粡璁よ瘉杩囩殑锛
$duration integer 鐢ㄦ埛淇濇寔鐧婚檰鐘舵佺殑绉掓暟銆傞粯璁や负0锛屾剰鍛崇潃鐧婚檰鐘舵佹寔缁埌鐢ㄦ埛鍏抽棴娴忚鍣ㄣ 濡傛灉澶т簬0锛屽皢鐢ㄤ簬鍩轰簬cookie鐧婚檰銆傚湪杩欑鎯呭喌涓嬶紝allowAutoLogin 蹇呴』璁剧疆涓簍rue锛屽惁鍒欏皢寮曞彂寮傚父銆
{return} boolean 鐢ㄦ埛鏄惁鐧诲綍銆
婧愮爜锛 framework/web/auth/CWebUser.php#222 (鏄剧ず)
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銆

loginRequired() 鏂规硶
public void loginRequired()
婧愮爜锛 framework/web/auth/CWebUser.php#352 (鏄剧ず)
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 浣跨敤鎴疯皟鐢ㄦ鏂规硶鍚庡彲浠ヨ閲嶅畾鍚 鍒版寚瀹氱殑鐧诲綍鍦板潃璋冪敤姝ゆ柟娉曞悗锛 灏嗙粓姝㈠綋鍓嶇殑璇綍澶勭悊銆

logout() 鏂规硶
public void logout(boolean $destroySession=true)
$destroySession boolean 鏄惁娉ㄩ攢鍏ㄩ儴鐨勪細璇濄傞粯璁や负true銆傚鏋滄槸false锛 鍒clearStates浼氳璋冪敤锛屽皢鍙垹闄ょ敱setState璁剧疆鐨勬暟鎹
婧愮爜锛 framework/web/auth/CWebUser.php#251 (鏄剧ず)
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锛屽叏閮ㄧ殑浼氳瘽淇℃伅灏嗚娉ㄩ攢銆

renewCookie() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.3锛
protected void renewCookie()
婧愮爜锛 framework/web/auth/CWebUser.php#467 (鏄剧ず)
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鐨勬寔缁椂闂淬

restoreFromCookie() 鏂规硶
protected void restoreFromCookie()
婧愮爜锛 framework/web/auth/CWebUser.php#436 (鏄剧ず)
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鏁版嵁琚鏀广

鍙傝

saveIdentityStates() 鏂规硶
protected array saveIdentityStates()
{return} array 韬唤淇℃伅鏁扮粍
婧愮爜锛 framework/web/auth/CWebUser.php#708 (鏄剧ず)
protected function saveIdentityStates()
{
    
$states=array();
    foreach(
$this->getState(self::STATES_VAR,array()) as $name=>$dummy)
        
$states[$name]=$this->getState($name);
    return 
$states;
}

浠庢寔涔呭瓨鍌ㄤ腑鎵惧洖淇℃伅骞跺皢瀹冧滑瀛樺偍鍒颁竴涓暟缁勪腑

saveToCookie() 鏂规硶
protected void saveToCookie(integer $duration)
$duration integer 鐢ㄦ埛淇濇寔鐧婚檰鐘舵佺殑绉掓暟銆傞粯璁や负0锛屾剰鍛崇潃鐧婚檰鐘舵佹寔缁埌鐢ㄦ埛鍏抽棴娴忚鍣ㄣ
婧愮爜锛 framework/web/auth/CWebUser.php#491 (鏄剧ず)
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銆 杩欎簺淇℃伅鍦ㄧ敤鎴蜂笅娆¤闂簲鐢ㄦ椂璁よ瘉鏃朵娇鐢ㄣ

鍙傝

setFlash() 鏂规硶
public void setFlash(string $key, mixed $value, mixed $defaultValue=NULL)
$key string 鎻愮ず淇℃伅鐨勯敭鍚
$value mixed 鎻愮ず淇℃伅
$defaultValue mixed 濡傛灉杩欎釜鍊煎拰鎻愮ず淇℃伅鐨勫肩浉鍚岋紝 鎻愮ず淇℃伅灏嗚鍒犻櫎銆傦紙鍥犳锛屼綘鍙互浣跨敤setFlash('key',null)鏉ュ垹闄ゆ彁绀轰俊鎭傦級
婧愮爜锛 framework/web/auth/CWebUser.php#665 (鏄剧ず)
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());
}

瀛樺偍涓涓彁绀轰俊鎭 涓涓彁绀轰俊鎭粎鍦ㄥ綋鍓嶈姹傚拰涓嬫璇锋眰涓湁鏁堛

setId() 鏂规硶
public void setId(mixed $value)
$value mixed 鐢ㄦ埛鐨勫敮涓鏍囪瘑绗︺傚鏋滄槸绌猴紝鎰忓懗鐫鐢ㄦ埛鏄竴涓潵瀹剧敤鎴枫
婧愮爜锛 framework/web/auth/CWebUser.php#293 (鏄剧ず)
public function setId($value)
{
    
$this->setState('__id',$value);
}

setName() 鏂规硶
public void setName(string $value)
$value string 鐢ㄦ埛鍚嶃
婧愮爜锛 framework/web/auth/CWebUser.php#316 (鏄剧ず)
public function setName($value)
{
    
$this->setState('__name',$value);
}

璁剧疆鐢ㄦ埛鍞竴鐨勬爣璇嗙锛堝锛岀敤鎴峰悕锛夈

鍙傝

setReturnUrl() 鏂规硶
public void setReturnUrl(string $value)
$value string 鐢ㄦ埛鐧诲綍鍚庡簲璇ヨ烦杞殑URL銆
婧愮爜锛 framework/web/auth/CWebUser.php#338 (鏄剧ず)
public function setReturnUrl($value)
{
    
$this->setState('__returnUrl',$value);
}

setState() 鏂规硶
public void setState(string $key, mixed $value, mixed $defaultValue=NULL)
$key string 鍙橀噺鍚
$value mixed 鍙橀噺鍊
$defaultValue mixed 榛樿鍊笺傚鏋$value===$defaultValue锛 鍙橀噺灏嗕粠浼氳瘽涓Щ闄
婧愮爜锛 framework/web/auth/CWebUser.php#576 (鏄剧ず)
public function setState($key,$value,$defaultValue=null)
{
    
$key=$this->getStateKeyPrefix().$key;
    if(
$value===$defaultValue)
        unset(
$_SESSION[$key]);
    else
        
$_SESSION[$key]=$value;
}

鍦ㄧ敤鎴蜂細璇濅腑瀛樺偍涓涓彉閲忋

CWebUser瀛愮被浣跨敤姝ゅ姛鑳借璁★紝 鏄笇鏈涙洿澶氱殑鐢ㄦ埛淇℃伅瀛樺偍鍦ㄧ敤鎴蜂細璇濅腑銆 閫氳繃姝ゆ柟娉曞瓨鍌ㄤ竴涓彉閲忥紝鍙橀噺鍙互鐢 getState鍙栧嚭銆傚彉閲忓湪鏁翠釜鐢ㄦ埛浼氳瘽鏈熼棿 鐨勯〉闈㈣姹備腑鏄寔涔呯殑銆

鍙傝

setStateKeyPrefix() 鏂规硶
public void setStateKeyPrefix(string $value)
$value string 瀛樺偍鍦ㄧ敤鎴蜂細璇濇暟鎹腑鐨勪細璇濆彉閲忓悕绉扮殑鍓嶇紑銆
婧愮爜锛 framework/web/auth/CWebUser.php#536 (鏄剧ず)
public function setStateKeyPrefix($value)
{
    
$this->_keyPrefix=$value;
}

updateAuthStatus() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.7锛
protected void updateAuthStatus()
婧愮爜锛 framework/web/auth/CWebUser.php#763 (鏄剧ず)
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璁剧疆鐨勭鏁版湡闂村唴涓嶆椿鍔紝 浠栧皢鑷姩鐧诲嚭銆

updateFlash() 鏂规硶
protected void updateFlash()
婧愮爜锛 framework/web/auth/CWebUser.php#739 (鏄剧ず)
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 鏉ヤ繚鎸佹彁绀轰俊鎭殑鍙敤鎬с

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.