Python 如何实施";以“登录”;带有“stormpath”的管理函数`
我正在为我们的管理仪表板实现“登录为”功能 基本上,我希望允许我们的管理员查看和使用该网站,就好像她已作为特定客户登录一样。例如,如果Trish给我们打电话问了一个问题,我们的管理员应该能够以Trish的身份登录,并准确地看到Trish看到了什么 下面是我编写的代码,假设我们有一封有效的Python 如何实施";以“登录”;带有“stormpath”的管理函数`,python,flask,stormpath,Python,Flask,Stormpath,我正在为我们的管理仪表板实现“登录为”功能 基本上,我希望允许我们的管理员查看和使用该网站,就好像她已作为特定客户登录一样。例如,如果Trish给我们打电话问了一个问题,我们的管理员应该能够以Trish的身份登录,并准确地看到Trish看到了什么 下面是我编写的代码,假设我们有一封有效的电子邮件: from app import stormpath_manager from flask.ext.stormpath import login_user ... main_cloud_directo
电子邮件
:
from app import stormpath_manager
from flask.ext.stormpath import login_user
...
main_cloud_directory = stormpath_manager.client.directories.search({
'name': 'Directory Name'})[0]
accounts = main_cloud_directory.accounts.search({'email': email})
if accounts.size == 1:
account = accounts[0]
login_user(account, remember=False)
return redirect('/settings')
else:
abort(404)
当我运行代码时,我得到了AttributeError:Account没有属性'is\u active'
返回
要为此设置上下文,请执行以下操作:
login\u user
希望看到扩展stormpath.resource.Account
的user
对象,而我们收到的Account
对象没有定义
login\u user
由stormpath\u account=StormpathUser.create(…)
方法返回的user
对象,则应用程序的其他部分的代码工作正常stormpath flask
与原始stormpath python sdk
混合使用,我想我真的应该使用stormpath flask
方法Account.email
,我可以使用User.from\u login
创建一个User
对象,但这不起作用,因为我们没有在终端存储密码搜索
方法返回的帐户
转换为用户
?你会怎么做才能让它工作
谢谢
Alex我是这个库的作者,所以想跳到这里=) 答案是肯定的:您确实可以将普通的
帐户
对象转换为有效的用户
对象。以下是方法:
from flask.ext.stormpath import login_user
from flask.ext.stormpath.models import User
from app import stormpath_manager
# ...
main_cloud_directory = stormpath_manager.client.directories.search({
'name': 'Directory Name'
})[0]
accounts = main_cloud_directory.accounts.search({'email': email})
if accounts.size == 1:
account = accounts[0]
account.__class__ = User
login_user(account, remember=False)
return redirect('/settings')
else:
abort(404)
重要的一点是帐户。这使用了一些元魔术将类转换为用户
对象=)这也是我在库中的幕后工作,例如:
希望有帮助 啊哈!这是在最好地使用Python。太好了,先生!