在 Plone 4.1 中使匿名用户可以查看成员肖像

发布于 2024-12-10 20:16:40 字数 303 浏览 0 评论 0原文

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

即使我在公共视图中返回正确的图像 URL,图像也始终受到保护,并且返回默认图像 ('defaultUser.png')。

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

只是为了澄清:

author.getPersonalPortrait().absolute_url()

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

In Plone 4.1, I'd like to make member portraits (found in portal_memberdata/portraits) viewable by Anonymous users.

Even if I return the correct url to the image in a public View, the image is always protected, and the default one ('defaultUser.png') is returned instead.

How can I accomplish this and display author portraits to Anonymous users inside my viewlets?

Just to clarify:

author.getPersonalPortrait().absolute_url()

will return the correct url to the image. When the image is then fetched by the browser when the view is accessed, the resource is protected.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疑心病 2024-12-17 20:16:40

经过一番 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,因此会回退到显示默认用户图像。

After a bit of prodding around with pdb, I solved the problem in this way:

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)

The secret is passing the id kwarg. Weird, but it works.

It wasn't a permission problem, but rather an issue on the way getPersonalPortrait returns the correct url to the image. If you do not specify the id, somehow it won't be able to work out the correct member id, hence fallback to showing the default user image.

我纯我任性 2024-12-17 20:16:40
def __init__(self):
    BaseTool.__init__(self)
    self.portraits=BTreeFolder2(id='portraits')

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

您可以访问:

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

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

def __init__(self):
    BaseTool.__init__(self)
    self.portraits=BTreeFolder2(id='portraits')

you've to add the View permission to the portal_memberdata.portraits folder.

You can do it by going to:

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

and managing permissions there :) portraits are simple images

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文