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

如何在Gramex中实现登录后按用户域名重定向至不同页面?

实现按用户域名登录后重定向的Gramex配置方案

完全可以在gramex.yaml的登录端点中配置实现按用户所属域名重定向的需求,以下是两种可行的实现方式:

方法一:利用模板表达式动态设置重定向地址

通过redirect参数结合Gramex模板语法,直接根据用户的hd字段(邮箱域名)匹配目标页面:

login:
  pattern: /$YAMLURL/login
  handler: DBAuth
  kwargs:
    auth:
      membership:
        hd: [domain1.com, domain2.com, domain3.com]
    # 模板表达式根据hd字段动态生成重定向地址
    redirect: >-
      {% if user.hd == 'domain1.com' %}index.html
      {% elif user.hd == 'domain2.com' %}index2.html
      {% elif user.hd == 'domain3.com' %}index3.html
      {% else %}default.html{% endif %}

方法二:通过post_login钩子函数处理重定向

如果需要更复杂的逻辑(比如从数据库读取映射关系),可以定义自定义函数作为post_login钩子,在登录完成后执行重定向逻辑:

1. 在gramex.yaml中配置钩子

login:
  pattern: /$YAMLURL/login
  handler: DBAuth
  kwargs:
    auth:
      membership:
        hd: [domain1.com, domain2.com, domain3.com]
    post_login: mymodule.redirect_by_domain

2. 在同级目录的mymodule.py中编写钩子函数

import gramex

def redirect_by_domain(handler, user):
    # 定义域名与页面的映射关系
    domain_map = {
        'domain1.com': 'index.html',
        'domain2.com': 'index2.html',
        'domain3.com': 'index3.html'
    }
    # 获取用户域名,默认跳转到default.html
    target_page = domain_map.get(user.get('hd'), 'default.html')
    # 构造完整重定向URL并跳转
    handler.redirect(handler.get_url(target_page))

两种方法都能实现需求:方法一更适合简单的固定映射,配置简洁;方法二更灵活,可扩展复杂业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:35:57