3

在 Plone 4.1 中,我想让匿名用户可以查看成员肖像(在 portal_memberdata/portraits 中找到)。

即使我将正确的 url 返回到公共视图中的图像,图像始终受到保护,而是返回默认的 ('defaultUser.png')。

我怎样才能做到这一点并在我的视图中向匿名用户显示作者肖像?

只是为了澄清:

author.getPersonalPortrait().absolute_url()

将正确的 url 返回到图像。当访问视图时浏览器获取图像时,资源受到保护。

4

2 回答 2

3

在对 pdb 进行了一些刺激之后,我以这种方式解决了这个问题:

def get_author_image(self, member_id):
    """
    Fetch the author portrait image url accoding to member_id
    """
    mtool = getToolByName(self.context, 'portal_membership')
    mtool.getPersonalPortrait(id=member.id)

秘密是通过 id kwarg。很奇怪,但它有效。

这不是权限问题,而是 getPersonalPortrait 将正确的 url 返回到图像的方式上的问题。如果您不指定 id,它将无法计算出正确的成员 id,因此回退到显示默认用户图像。

于 2011-10-19T10:51:12.190 回答
1
def __init__(self):
    BaseTool.__init__(self)
    self.portraits=BTreeFolder2(id='portraits')

您必须将查看权限添加到 portal_memberdata.portraits 文件夹。

您可以通过以下方式完成:

http://mysite.xx/portal_memberdata/portraits/manage_main

并在那里管理权限:) 肖像是简单的图像

于 2011-10-19T09:34:44.343 回答