Django 登录检查-自动重定向到登录页

编写一个Mixin类

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

class LoginRequiredMixin(object):
    """
    登录验证:如果未登录,自动重定向到登录页面
    """

    @method_decorator(login_required(login_url=‘/myuser/login/‘))       # 类方法装饰器,传入login_required装饰器
    def dispatch(self, request, *args, **kwargs):                       # 必须重写分发方法dispatch,自动识别分发给get或post方法
        return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)

类视图继承之

class UserCenInfoView(LoginRequiredMixin, View):         # 注意继承顺序
    def get(self, request):
        ...
    def post(self, request):
        ...

关于Mixin类

Mixin:在设计类的继承关系时,通常,主线都是单一继承下来的,如果需要"组合"额外的功能,通过多重继承就可以实现,这种设计通常称之为Mixin(混合)。
Mixin类一般以Mixin为后缀,使用Mixin类实现多重继承需要注意:
1)首先,它必须表示某一种辅助功能,而不是某个事物;
2)其次,它必须功能单一,如果有多个功能,那就写多个Mixin类;
3)再者,它不依赖于子类的实现;
4)最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能(比如飞机照样可以载客,就是不能飞了^_^)。

  至此。转载请注明出处。

原文地址:https://www.cnblogs.com/wcwnina/p/9248162.html

时间: 2024-08-02 05:21:00

Django 登录检查-自动重定向到登录页的相关文章

当session会话结束时,重定向到登录页显示在iframe框内的问题

//检测到用户未登录 //方法1: 重定向到登录页,但是不支持跳出iframe //response.sendRedirect("/dormitory/toLoginPage"); //方法2:以输出页面并请求到登录页面的形式跳转到登录页面,可以跳出iframe(推荐) PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<script&g

用户未登录或Session超时时重定向到登录页,不那么简单

在网站开发中,我们经常有这样的场景出现: 情景1:对未登录的用户或没有权限的用户,当其想访问某个受限网页时,系统要能够自动转到登录页面.   情景2:对于用session保存用户状态的情况还有这样一种需求,当用户的session已超时时,用户再想执行操作时,也要将其转到登录页面.   在asp.net中,要实现上述的功能容易吗?有人会说:"这太容易了,可以通过下面两种方式实现".   方法一:直接调用asp.net中的response.redirect方法实现 response.red

Django之入门 CMDB系统 (三) 登录注销

Django之入门 CMDB系统 (三) 登录注销 前言 作者: 何全,github地址: https://github.com/hequan2017 QQ交流群: 620176501 通过此教程完成从零入门,能够独立编写一个简单的CMDB系统. 目前主流的方法开发方式,分为2种:mvc 和 mvvc方式.本教程为 mvc 方式,即 django负责渲染html.后面会推出 mvvc(前后端分离)的入门教程. 教程项目地址: https://github.com/hequan2017/husky

php 避免登录出现循环重定向

我们在写网站的时候经常会出现这种情况,登录的时候,老是说你的页面中包含循环重定向的内容. 下面我就来说明一下几种常见的情况. 在thinkphp中,如果是后台的话,要求必须登录才能进入到主管理界面.那么我们可以通过这种方法来实现. 在控制器中建立一个 CommonController 通用控制器,然后在里面写一个 public function _initialize(){ //检查是否有session('username')的内容,如果没有则跳转到登录页面... 没有登录,则跳到登录控制器 $

盒子 收藏帖子 转移-实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录

//实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录 Function FillForm(WebBrowser: TWebBrowser2; FieldName: String; Value: String): Boolean; Var i, j: Integer; FormItem: Variant; Begin Result := False; //no form on document If WebBrowser.OleObject.Document.all.tags('FO

无密钥登录的自动脚本实现(ssh-copy-id、expect免交互输入脚本)

无密钥登录的自动脚本实现: vim auto_ssh.sh #!/usr/bin/expect   set timeout 10   set username [lindex $argv 0]   set password [lindex $argv 1]   set hostname [lindex $argv 2]   spawn ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]$hostname expect {         

登录检查 springMVC Interceptor拦截器实现登访问

web开发中经常会遇到浏览网页时,需要用户登陆之后才能访问一些重要的页面,当你访问一些"非法"页面时,也就是如果检查你还没有登录进该系统,则需要先登录,只要你成功登录就可以访问信管内容,实现该功能需要 继承拦截器HandlerInterceptorAdapter,这个类中有三个重要的方法,灰色老哥方法可以先不关注,主要代码实现是绿色那一部分,代码如下: /** * @author  tony * @date  2014-12-17 */ /** * 登录拦截器,只有登录之后才能访问 *

ecmall用户登录后自动退出解决方法

一部分用户反映登录后自动退出,经过跟踪观察,发现这些用户都是动态IP,而ecmall 中的 session 刚好是与 ip 有关的,故而找不到用户回话二失败,需重新登录. 怎么处理呢? 修改 includes/libraries/session.lib.php 方法,简单粗暴,去掉 ip 判断即可,哇卡卡 /** * 生成session验证串 * * @author wj * @param string $session_id * @return stirng */ function gen_s

【2017-06-29】在登录页面自动返回上次请求页面、Js获取table中的行数与列数

一.在登录页面自动返回上次请求页面 Request.UrlReferrer比如 if (Request.UrlReferrer != null) { //如果能获取来路地址 Response.Redirect(Request.UrlReferrer.ToString());} else { //没有来路地址 Response.Redirect("index.aspx"); 二.Js获取table中的行数与列数 var table =document.getElementById(&qu