自定django登录跳转限制
2018-03-15 10:50 _天枢 阅读(380) 评论(0) 编辑 收藏 举报django自定义一个登录跳转限制:
解释:
不登录不让跳转到其它页面。
原理:
做一个装饰器,在访问路由时,先进行判断,登录session是否存在,如果存在则跳转,不存在则返回到登录页面。或者你可以不登录返回404错误页面。
#验证登录跳转页面 def login_limit(func): def war(request): try: request.session['username'] #session不存在会报错 ret = func(request) return ret except: return HttpResponseRedirect('/') return war
注意事项:
如果,前端,发起请求是ajax发起,后台函数要进行装饰@csrf_exempt ,这是跨站请求伪造。不加这个会报错。
那么问题就来了。加了这个之后,如果在加上我们自己写的,防跳转装饰器。如果加在@csrf_exempt之前,如下这样。
那么恭喜你,会报个302之类的错误。那问题怎么解决:
@login_limit
@csrf_exempt
解决办法:将我们防跳转装饰器,放在跨站请求伪造装饰器之后。
#删除测试用例 @csrf_exempt @login_limit def case_delete_data(request): case_id = int(request.POST.get('caseid')) model_class = ModelClass(case_interface_table) model_class.delete_data(case_id) ''' #分页代码 ''' curPage = int(request.GET.get('page','1')) allCount = case_interface_table.objects.all().count() fpage = pageInfo(curPage,allCount,5) return HttpResponse(request,"OK")
作 者:
天枢
出 处:
http://www.cnblogs.com/yhleng/
关于作者:专注于软件自动化测试领域。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者
直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角
【
推荐】
一下。您的鼓励是作者坚持原创和持续写作的最大动力!