您的位置:首页 > 健康 > 美食 > 电商网站设计线路图_济宁十大外贸公司_营销策划咨询机构_自动连点器

电商网站设计线路图_济宁十大外贸公司_营销策划咨询机构_自动连点器

2024/12/23 21:19:04 来源:https://blog.csdn.net/guya1990/article/details/143127570  浏览:    关键词:电商网站设计线路图_济宁十大外贸公司_营销策划咨询机构_自动连点器
电商网站设计线路图_济宁十大外贸公司_营销策划咨询机构_自动连点器

去管理员列表中,获取刚才登录的用户session:

用户发来请求,获取cookie随机字符串,拿着随机字符串,看看session中有没有

通过request.session.get("user_info")来获取

def admin_list(request):# 获取当前登录用户信息info = request.session.get('user_info')print("info is...", info)# return HttpResponse("admin_list is ok")# 查询所有的数据queryset = models.Admin.objects.using("default").all()# 创建分页对象page_obj = Pagination(request, queryset)form = AdminModelForm()# context = {#     "queryset": queryset,#     "form": form# }context = {"form": form,"queryset": page_obj.page_queryset,  # 分完页的数据"page_html": page_obj.html(),  # 分页后的页码}return render(request, 'admin_list.html', context)

访问下管理员列表界面,看看输出的info是什么

可以看到session确实是被获取到了。

所以,如果用户没有登录,则返回登录界面,不给他直接进入部门列表界面或者管理员界面。

def admin_list(request):# 获取当前登录用户信息info = request.session.get('user_info')print("info is...", info)# 如果用户没有登录,则跳转到登录页面if not info:return redirect("/account/login/")# return HttpResponse("admin_list is ok")# 查询所有的数据queryset = models.Admin.objects.using("default").all()# 创建分页对象page_obj = Pagination(request, queryset)form = AdminModelForm()# context = {#     "queryset": queryset,#     "form": form# }context = {"form": form,"queryset": page_obj.page_queryset,  # 分完页的数据"page_html": page_obj.html(),  # 分页后的页码}return render(request, 'admin_list.html', context)

我们把cookie清除,看看能不能直接访问部门列表界面或者管理员列表界面

可以看到,当我们直接访问管理员列表,直接跳转登录界面。

类似的,如果有其他视图,则在所有的视图函数上,统一加上这个判断。

但是一个个加的话,贼烦。使用中间件来实现。

首先创建middleware文件夹,创建auth.py

from django.utils.deprecation import MiddlewareMixinclass AuthMiddlewareMixin(MiddlewareMixin):def process_request(self, request):print("MW 进来了")def process_response(self, request, response):print("MW 走了")return response

然后在settings注册

MIDDLEWARE = ["django.middleware.security.SecurityMiddleware","django.contrib.sessions.middleware.SessionMiddleware","django.middleware.common.CommonMiddleware","django.middleware.csrf.CsrfViewMiddleware","django.contrib.auth.middleware.AuthenticationMiddleware","django.contrib.messages.middleware.MessageMiddleware","django.middleware.clickjacking.XFrameOptionsMiddleware","app01.middleware.auth.AuthMiddlewareMixin",
]

修改业务逻辑

# 继承中间件类
from django.shortcuts import redirect
from django.utils.deprecation import MiddlewareMixinclass AuthMiddlewareMixin(MiddlewareMixin):def process_request(self, request):# 0 在做读取访问用户的session之前,要先过滤掉那么不需要登录就能访问的界面if request.path_info in ["/account/login/","/account/logout/",]:return None# 1 读取当前访问用户的session,如果能读取到,那么说明用户曾经登陆过,那么就可以继续往下执行;info_dict = request.session.get('user_info')if info_dict:return None# 2 如果没有读取到,则提示用户进行登录else:# return HttpResponse("请先登录")return redirect('/account/login/')def process_response(self, request, response):print("process_response。。。。")return response

把原来的获取信息注释掉

def admin_list(request):# # 获取当前登录用户信息# info = request.session.get('user_info')# print("info is...", info)# # 如果用户没有登录,则跳转到登录页面# if not info:#     return redirect("/account/login/")# return HttpResponse("admin_list is ok")# 查询所有的数据queryset = models.Admin.objects.using("default").all()# 创建分页对象page_obj = Pagination(request, queryset)form = AdminModelForm()# context = {#     "queryset": queryset,#     "form": form# }context = {"form": form,"queryset": page_obj.page_queryset,  # 分完页的数据"page_html": page_obj.html(),  # 分页后的页码}return render(request, 'admin_list.html', context)

可以看到,当我们直接访问管理员列表,直接跳转登录界面。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com