You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Login视图中next参数失效,跳转至预设页面问题求助

解决Django自定义Login视图中next参数不生效的问题

你当前的问题是重写get_success_url方法时,完全跳过了Django默认处理next参数的逻辑,导致不管URL里有没有合法的next参数,都会直接跳转到你指定的页面。

要修复这个问题,只需要在get_success_url里先检查next参数是否存在且合法,优先使用它,再 fallback 到你原来的角色判断逻辑:

from django.utils.http import is_safe_url
from django.urls import reverse

class Login(auth_views.LoginView):
    
    def get_success_url(self):
        # 先获取next参数
        next_url = self.request.GET.get('next')
        # 验证next是否是安全的跳转地址(避免恶意跳转)
        if next_url and is_safe_url(next_url, allowed_hosts=self.request.get_host()):
            return next_url
        # 没有合法next的情况下,再按用户角色跳转
        if self.request.user.is_superuser:
            return reverse('dashboard')
        else:
            return reverse('homepage')

关键逻辑说明:

  • 从请求的GET参数中提取next值
  • 用is_safe_url验证地址合法性,防止跨站钓鱼跳转
  • 优先使用合法的next地址,否则执行原有的角色跳转规则

内容的提问来源于stack exchange,提问作者riccardo test

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:50:29