1
我刚开始在Django工作,它很棒!用Authomatic验证django - 最佳工作流程
我希望我的web应用程序能够通过他们的twitter帐户访问有限数量的人。为了实现这一点,我使用了插件Authomatic。
This是一个初学者的例子,展示了如何在Django中使用Authomatic。从此,我用下面的代码片段:
def login(request, provider_name):
# We we need the response object for the adapter.
response = HttpResponse()
# Start the login procedure.
result = authomatic.login(DjangoAdapter(request, response), provider_name)
if result:
response.write('<a href="..">Home</a>')
elif result.user:
if not (result.user.name and result.user.id):
result.user.update()
var username = result.user.name
var id = result.user.id
return response
我的问题是:检查用户名是否允许Twitter用户之一,以后我怎么登录,从而使用户根浏览所有受保护的页面?我习惯使用这样的东西:
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
但问题是,Twitter用户没有分配给他们的用户对象。我能想到的唯一的事情是硬编码“允许”用户在我的代码默认,但似乎很狡猾......
编辑:我试图执行阿什温的回答,但是这给了我这样的:
#我们需要适配器的响应对象。 响应=的HttpResponse()所有的
# Start the login procedure.
result = authomatic.login(DjangoAdapter(request, response), provider_name)
if result:
response.write('<a href="..">Home</a>')
if result.error:
# Login procedure finished with an error.
response.write('<h2>Damn that error: {0}</h2>'.format(result.error.message))
elif result.user:
# We need to update the user to get more info.
if not (result.user.name and result.user.id):
result.user.update()
# Welcome the user.
response.write(u'<h1>Hi {0}</h1>'.format(result.user.name))
response.write(u'<h2>Your id is: {0}</h2>'.format(result.user.id))
response.write(u'<h2>Your email is: {0}</h2>'.format(result.user.email))
# if result.user.id == 110740012624414845989:
uname = result.user.id
pwd = '** RANDOM PASSOWRD I SHOULD HAVE? **'
user = authenticate(username=uname, password=pwd)
login(request, user)
首先,我无法想象,这是很好的做法,在我的代码这样的密码writter。第二我得到错误提供者名称“用户名”未指定!
有人知道我在做什么错吗?
感谢您的回答,但如果我没有密码,如何验证这些用户对象? – hY8vVpf3tyR57Xib 2015-04-04 12:03:17
@ user3361028:您可以使用无密码验证。这应该有所帮助:http://stackoverflow.com/questions/2787650/manually-logging-in-a-user-without-password – 2015-04-04 13:30:28