2010-11-03 81 views
0

我们想管理后端动作的凭证,从 后端。symfony 1.4:试图管理动作的凭证

如何获取应用程序的操作列表?之后,我们可以通过getCredential()显示每个人的凭证 。

第二个问题:我发现获取动作 (getCredential())的凭证的功能,但如何设置的凭据?我没有找到任何 setCredential()函数...

哈维

回答

0

获取的应用程序的操作的列表无关具有凭证。传统证书是如何命名或组织的,这是一个常规问题。行动和凭据是独立的。每个应用程序可以有一个凭证,或者每个操作可以定义一个凭证。尽管如此,你可以单独管理凭证。

如果您确实想获取可以解析路由文件的操作列表。

您也可以使用PHP的反射机制从动作类中获取方法。

但是,sfDoctrineGuardPlugin/sfGuardPlugin为大多数应用程序提供足够的凭据管理。我宁愿采用这种方法。

2n个问题:有没有setCredential()方法但有一个addCredential()

+0

嗨,谢谢你的回应。怎么读/写每个文件security.yml?然后,我会解析每个文件寻找行 “凭证:”的关键是,并将添加/删除凭证 该行... – ziiweb 2010-12-12 18:39:23

0

让我们先从第二个问题开始,以巩固我们对Symfony证书工作方式的理解。

Symfony中的凭证通过security.yml文件设置为模块的config目录。一个security.yml文件可能是这样的:

all: 
    is_secure: true #makes all methods on this action require user's to be authenticated 

edit: 
    credentials: [admin] 

show: 
    is_secure: false #don't require authentication for this one 

,除非你想真正写一个新的YAML文件,并从缓存中清除旧的(不推荐您不能更改从后端行动的安全设置)。如果确实是需要一个动作的动态凭证,我会存储某种开关(锁定文件,APC,数据库)并使用过滤器来动态设置所需的凭证(也不是真的推荐)。

难道你不能对标准的用户/组/许可设置做任何事情吗?

+0

嗨,谢谢你的回应。怎么读/写每个文件security.yml?然后,我会解析每个文件,寻找行 “凭证:”的关键是,并将添加/删除 凭证行... – ziiweb 2010-12-12 18:38:45

2

我同意很多关于这是否是一个好主意的问题。

无论如何,做什么,我想你问:需要一个动作sfAction来自这个方法

凭据:

public function getCredential() 
    { 
    return $this->getSecurityValue('credentials'); 
    } 

可以重载,在你的行动(或它的扩展一个新的sfActions的子类,并让你所有的操作扩展它)如果你想做一些更复杂的事情,比如从数据库或其他来源获取证书。

+0

嗨,谢谢你的回应。怎么读/写每个文件security.yml?然后,我会解析每个文件,寻找行 “凭证:”键的位置,并将在 的行中添加/移除凭据... – ziiweb 2010-12-12 18:38:11