我有以下设置:
运行Django前端Webpage
我现在必须将Django前端集成到第三方项目中,该项目是用java和angular编写的。身份验证完全由此第三方处理。
用户通过LDAP登录并创建JWT令牌。
是否可以简单地在Django中接收令牌,并在成功解码令牌后对用户进行身份验证?当我有受保护的函数时,这如何与@login_required装饰器一起工作?
有没有什么项目可以让我确定方向,或者我必须自己写?
发布于 2018-06-11 06:31:19
我使用内置的User
模型来存储用户名。这使我能够在身份验证成功时登录用户,然后像您通常使用的那样使用@login_requested
等Django功能。
下面是一个示例代码(没有REST身份验证的代码)。
from django.contrib import messages
from django.contrib.auth import login
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from django.views.decorators.cache import never_cache
@never_cache
def user_login(request):
''' User login '''
if request.user.is_authenticated:
return HttpResponseRedirect(reverse('main:index'))
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# Your code for authentication here
# authenticate = ....
if authenticate:
# Get user // create one if it doesn't exist yet
user, created = User.objects.get_or_create(username=username)
# Login user - @login_required decorator can be used after user has been logged in
login(request, user)
next = request.POST.get('next', '/') if request.POST.get('next') else '/'
return HttpResponseRedirect(next)
else:
messages.warning(request, 'Authentication failed', extra_tags=forgot_password)
return HttpResponseRedirect(reverse('main:login'))
else:
return render(request, 'main/login.html', {})
https://stackoverflow.com/questions/50786708
复制相似问题