Python django身份验证和密码重置
因此,我目前正在从事一个web应用程序项目,并成功地实现了身份验证和密码确认 但我的问题是,我使用html模板完成了这项工作,现在要求我们必须使用api来开发我们的应用程序 现在,我对api还不熟悉,真的很困惑如何使用我构建的身份验证系统(因为我们必须为内置实现的类提供模板,而它们接受来自自身的值)Python django身份验证和密码重置,python,django,api,authentication,Python,Django,Api,Authentication,因此,我目前正在从事一个web应用程序项目,并成功地实现了身份验证和密码确认 但我的问题是,我使用html模板完成了这项工作,现在要求我们必须使用api来开发我们的应用程序 现在,我对api还不熟悉,真的很困惑如何使用我构建的身份验证系统(因为我们必须为内置实现的类提供模板,而它们接受来自自身的值) 在仍然使用内置机制更改密码时,是否可以从代码隐藏中实际查看和管理注册用户?您可以使用内置的Django auth框架使用此通用视图 @login_required def change_passwo
在仍然使用内置机制更改密码时,是否可以从代码隐藏中实际查看和管理注册用户?您可以使用内置的Django auth框架使用此通用视图
@login_required
def change_password(request):
if request.method == "POST":
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
# Important to update the session otherwise user will have to login again
update_session_auth_hash(request, user)
# Server side alert
print("Password changed for {0}".format(user.username))
return redirect('/index/')
else:
print(form.errors)
else:
form = PasswordChangeForm(request.user)
return render(request, 'website/changepassword.html', {'form': form})
您需要使用djangorestframework,并使用decorator
@apiview(['GET','POST'])
来创建RestAPI您可以使用djangorest框架中提供的令牌身份验证。请参阅文档中的内容:
令牌身份验证
此身份验证方案使用简单的基于令牌的HTTP身份验证方案。令牌身份验证适用于客户端-服务器设置,如本机桌面和移动客户端
要使用TokenAuthentication方案,您需要将身份验证类配置为包括TokenAuthentication,并在已安装的应用程序设置中另外包括rest_framework.authtoken:
INSTALLED_APPS = (
...
'rest_framework.authtoken'
)
注意:请确保在更改设置后运行manage.py migrate。rest_framework.authtoken应用程序提供Django数据库迁移
您还需要为您的用户创建令牌
from rest_framework.authtoken.models import Token
token = Token.objects.create(user=...)
print token.key
对于要进行身份验证的客户端,令牌密钥应包含在授权HTTP头中。键的前缀应该是字符串文字“Token”,两个字符串之间用空格分隔。例如:
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
WWW-Authenticate: Token
curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
注意:如果您想在头中使用不同的关键字,例如Bearer,只需将TokenAuthentication子类化并设置keyword类变量
如果成功进行身份验证,TokenAuthentication将提供以下凭据
- request.user将是Django用户实例李>
- request.auth将是rest\u framework.authtoken.models.Token实例
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
WWW-Authenticate: Token
curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
curl命令行工具对于测试令牌认证的API可能很有用。例如:
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
WWW-Authenticate: Token
curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
注意:如果您在生产中使用令牌身份验证,则必须确保您的API仅通过https可用
来源:嘿,拉胡尔,你可以使用Djangorest框架。看一下医生。它使用了基于令牌的身份验证。这里您再次使用了模板。在我的例子中,web应用程序的前端正在由其他人开发,我需要开发一个api并提供给他们,他们可以通过它调用他们需要的任何功能