2013-05-11 40 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