1

特定の BrowserView で、メンバーとしてログインする必要があります。このビューは、実際にはメンバー専用の 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 でこのメンバーとして認証する方法を知りたいです。

ありがとうございました

4

1 に答える 1

2

認証後に、そのようなジョブ用の新しいセキュリティマネージャーを作成します。

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)
于 2013-01-25T15:16:54.447 に答える