在Plone中使用用户名和密码登录

在Plone中使用用户名和密码登录,plone,zope,Plone,Zope,在给定的浏览器视图中,我需要以成员身份登录。此视图实际上是一个仅面向成员的Web服务。我从请求XML中提取用户名和密码,并且需要作为该成员进行身份验证 到目前为止,我已经找到了方法: self.portal.acl_users.authenticate(user, password, self.portal.REQUEST) 但此方法仅返回成员对象(如果用户和密码正确)。它不执行身份验证。我通过执行以下命令来确认这一点: from AccessControl import getSecurit

在给定的浏览器视图中,我需要以成员身份登录。此视图实际上是一个仅面向成员的Web服务。我从请求XML中提取用户名和密码,并且需要作为该成员进行身份验证

到目前为止,我已经找到了方法:

self.portal.acl_users.authenticate(user, password, self.portal.REQUEST)
但此方法仅返回成员对象(如果用户和密码正确)。它不执行身份验证。我通过执行以下命令来确认这一点:

from AccessControl import getSecurityManager
getSecurityManager().getUser() #Get the current authenticated user
>>>Anonymous User
我想知道如何在此BrowserView中验证此成员身份


谢谢

我会在身份验证后为此类作业创建一个新的安全管理器:

from AccessControl.SecurityManagement import newSecurityManager
from AccessControl.SecurityManagement import getSecurityManager

uf = self.portal.acl_users
if not uf.authenticate(user, password, self.request):
    # Unauthorized, better raise a 401 here.

smanager = getSecurityManager()
user = uf.getUserById(user)
if not hasattr(user, 'aq_base'):
    user = user.__of__(uf) # acquisition wrap the user
newSecurityManager(self.request, user)

# Do anything the new user should be able to do

setSecurityManager(smanager)