存在一种情况:我将一些结构化数据(例如数组或对象,或者甚至字符串)存储为Zend_Auth标识。从版本到版本,身份结构可以改变,因此一个版本的身份可以(或不可以)与另一个版本的应用程序代码兼容。Zend_Auth身份版本
我想有一个能力来验证存储的身份数据是否符合当前版本的要求。
当我从手动看到的,是否存在身份验证等进行:
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
// Identity exists; get it
$identity = $auth->getIdentity();
}
但是没有挂接到hasIdentity()
方法的能力或其他地方进行验证。
我看到要做到这一点的唯一方法是实现我自己的Zend_Auth_Storage_Interface
类,它将使用一些其他存储作为实现并执行存储数据的验证。
有没有更合适的解决方案?
你完全正确。我使用Zend_Auth对用户进行身份验证,并使用Zend_Acl对其进行授权(在preDispatch上过滤导航和验证权限)。 但我怎么能通过Zend_Acl确定身份是错误的?它是否意味着该用户没有任何权限或类似的东西? – 2011-03-12 13:49:56
更具体一点:该网站只包含会员区。这意味着当用户未登录时,必须显示登录表单而不是任何页面。否则,当用户登录时,他应该看到他被允许访问的那部分网站。所以可能在错误身份的情况下,我必须确定用户的角色为“匿名”,而不是将其作为匿名进行处理。 – 2011-03-12 14:01:55
你是对的,因为角色的工作原理,你可以从较不宽容的角色继承他们到最强大的角色。我通常使用guest作为我的起始角色,具有访问登录页面和登录的唯一权限,然后提升权限。 – 2011-03-12 14:12:08