轻量级bug管理平台——首页项目

通过中间件判断用户是否登录成功,与用户名密码登录通过中间件进行校验的过程一样。

每次请求进来,都会走中间件,中间件给request.tracer赋值,tracer为自己自定义的项目名。中间件可以应用在视图函数或者页面当中。

中间件代码:

 

class AuthMiddleware(MiddlewareMixin):

    def process_request(self, request):
        """如果用户已登录,则request中赋值"""

        # request.tracer = Tracer()

        user_id = request.session.get('user_id', 0)  # 如果用户登录,则session中有user_id。如果没有,则返回0,0在数据库中无法查询。,
        user_object = models.UserInfo.objects.filter(id=user_id).first()  # 去数据库查询有没有这个对象
        request.tracer = user_object  # request.tracer指的是这个对象。
        # 若request.tracer返回一个None,则代表用户没登录

 

 

 

  <ul class="nav navbar-nav navbar-right">
                {% if request.tracer %}
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                           aria-expanded="false">{{ request.tracer.username }} <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">管理中心</a></li>

                            <li role="separator" class="divider"></li>
                            <li><a href="{% url 'logout' %}"> 退 出</a></li>
                        </ul>
                    </li>
                {% else %}
                    <li><a href="{% url 'login' %}">登 录</a></li>
                    <li><a href="{% url 'register' %}">注 册</a></li>
                {% endif %}

 

 视图函数:

def logout(request):
    request.session.flush()  # 清空session数据
    return redirect('index')  # 找到index的URL

 

posted @ 2022-09-02 15:10  费皿啊  阅读(55)  评论(0)    收藏  举报