所以,我目前正在开发一个Web应用程序项目,并成功实现了身份验证和密码确认。
但我的问题是我是使用html模板完成的,现在我们需要使用api来为后端开发我们的应用程序。
现在,我是api的新手并且真的很困惑如何使用我构建的身份验证系统(因为我们必须为内置的实现类提供模板,并且他们接受自己的值)
是否可以从代码隐藏中实际查看和管理注册用户,同时仍然使用内置机制
答案 0 :(得分:2)
对于密码更改,您可以使用内置的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
,并使用装饰器@apiview(['GET', 'POST'])
创建RestAPI
答案 1 :(得分:0)
您可以使用django rest框架中提供的TokenAuthentication。查看说明文件内容:
TokenAuthentication
此身份验证方案使用基于令牌的简单HTTP身份验证方案。令牌认证适用于客户端-服务器设置,例如本地台式机和移动客户端。
要使用TokenAuthentication方案,您需要配置身份验证类以包括TokenAuthentication,并在INSTALLED_APPS设置中另外包含rest_framework.authtoken:
INSTALLED_APPS = (
...
'rest_framework.authtoken'
)
注意:确保在更改设置后运行manage.py migration。 rest_framework.authtoken应用程序提供了Django数据库迁移。
您还需要为用户创建令牌。
from rest_framework.authtoken.models import Token
token = Token.objects.create(user=...)
print token.key
要使客户端进行身份验证,令牌密钥应包含在“授权HTTP”标头中。密钥应以字符串文字“ Token”作为前缀,并用空格分隔两个字符串。例如:
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
注意:如果要在标头中使用其他关键字(例如Bearer),只需将TokenAuthentication子类化,然后设置关键字class变量即可。
如果成功通过身份验证,则TokenAuthentication将提供以下凭据。
被拒绝权限的未经身份验证的响应将导致带有适当的WWW-Authenticate标头的HTTP 401未经授权的响应。例如:
WWW-Authenticate: Token
curl命令行工具对于测试令牌身份验证的API可能很有用。例如:
curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
注意:如果您在生产中使用TokenAuthentication,则必须确保您的API仅可通过https使用。
来源:http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication