2013-05-11 18 views
0

我正在開發一個使用YII進行學習的演示項目。@如何在YII的accessRules中運行

我的疑問是accessRules()函數。

在我的項目來檢查用戶訪問(已註冊用戶),我在用戶登錄會話保持價值和我檢查使用「表達」上下文參數accessRules用戶訪問。

喜歡的東西:

array('allow', 
     'actions'=>array('create','edit','delete'), 
     'expression' => '$this->isUser()' //isUser() returns bool value by checking session. 
    ), 

對於這個相同的功能,我喜歡使用 '用戶' 上下文參數。但我無法理解'@'是如何引用Authenticated Users的。

請讓我知道

  1. 如何 '@' 功能是在accessRules
  2. 我們可以將'@'更改爲其他特殊字符或唯一字符串嗎?
+0

你爲什麼要改變它? – 2013-05-11 12:23:19

+1

它檢查'IWebUser :: getIsGuest()'。檢查[實施](https://github.com/yiisoft/yii/blob/1.1.13/framework/web/auth/CAccessControlFilter.php#L308)。 – DCoder 2013-05-11 12:26:39

+0

感謝DCoder。然後@在功能上被硬編碼。亞歷山德魯, – Hearaman 2013-05-11 12:29:11

回答

1

你用什麼來檢測用戶登錄?一個簡單的會話變量由您自己手動設置?

我建議你看一看這裏閱讀有關登錄的Yii:
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth

而對於已經具有登錄系統實現了一個例子,你可以看看自帶的下載博客演示演示文件夾中的框架。 如果逐個檢查登錄過程中使用的文件,您可以輕鬆地複製它們並將它們集成到您的項目中。 (比如; sitecontroller/login action,loginform,useridentity組件等等)。

'@'符號代表已登錄的用戶,'*'代表所有用戶。

所以我知道,在「用戶」的陣列的關鍵,我可以把這個值之一:

  • 「@」所有登錄的用戶
  • 「*」所有用戶
  • 「陣列( '用戶名1', '用戶名2', 'USERNAME3')」 - 只有特定用戶

其他資源可能有用:
http://www.larryullman.com/2010/01/04/simple-authentication-with-the-yii-framework/

+0

,感謝您的信息。 – Hearaman 2013-05-11 12:50:31

+0

不客氣,它可能看起來很複雜,但事實並非如此,當你瞭解所有零件的功能時,你會看到它。 :) – 2013-05-11 13:24:58