您的位置:首页 > 编程语言 > Go语言

Django登录验证

2017-09-09 10:51 344 查看
装饰器:

def login(func):
def wrapper(request, *args, **kw):
if 'uname' not in request.COOKIES:
response = redirect('login')
response.set_cookie('url', request.get_full_path()) #记录用户浏览的URL
return response
else:
return func(request, *args, **kw)
return wrapper

登录时会设置一个键为uname的COOKIE,所以在进入某些页面前用此装饰器判断用户是否登录,如果已经登录,则返回该页面的view层方法,正常跳转。如果用户未登录则记录下用户浏览的完整URL,在登录成功后跳转到用户刚才浏览的URL

def login(request):
if request.method == 'GET':
return render(request, 'login.html', {})
if request.method == 'POST':
username = request.POST['username']
password = request.POST['pwd']
count = UserInfo.objects.filter(username=username).count()
if count == 0:
return redirect(to='login')
else:
user = UserInfo.objects.get(username=username)
if user.password == password:
url = request.COOKIES.get('url', '/index')#如果'url'存在返回url,否则跳转index
response = redirect(to=url)
response.set_cookie('uname', username, max_age=3600)
return response
else:
return redirect(to='login')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django cookie python login