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

如何修改Yesod子站点URL?能否重命名yesod-auth端点?

嘿,这两个Yesod子站点的URL问题不难解决,完全不用改本地yesod-auth包!我给你分点说清楚:

1. 修改自定义子站点的URL

如果是你自己开发的子站点,改URL非常直接,分两步操作:

  • 修改子站点内部路由:在子站点的路由定义里,直接把路径换成你想要的。比如原本的子站点路由是:

    mkYesodSubData "BlogSub" [parseRoutes|
    /posts BlogPostsR GET
    /post/#Int BlogPostR GET
    |]
    

    改成葡萄牙语路径:

    mkYesodSubData "BlogSub" [parseRoutes|
    /publicacoes BlogPostsR GET
    /publicacao/#Int BlogPostR GET
    |]
    
  • 调整主站点挂载前缀:如果子站点挂载在主站点的某个路径下(比如原来的/blog),也可以在主站点路由里修改这个前缀:

    mkYesod "App" [parseRoutes|
    / HomeR GET
    /blogue BlogSubR BlogSub getBlogSub
    |]
    

    这样子站点的所有端点就会变成/blogue/publicacoes、/blogue/publicacao/1这类路径。

2. 重命名yesod-auth的端点(替换/login、/email/register为葡萄牙语路径)

Yesod-auth本身支持自定义路由,核心是通过覆盖authSettings里的authRoutes字段来实现,完全不用碰源码:

首先导入必要的模块:

import Yesod.Auth
import Yesod.Auth.Email  -- 如果你用邮箱认证的话

然后在主站点的YesodAuth实例中,自定义认证路由:

instance YesodAuth App where
    type AuthId App = UserId  -- 替换成你实际的AuthId类型
    authenticate = ...  -- 保留你原来的认证逻辑
    loginDest _ = HomeR  -- 登录后跳转目标,按需修改
    logoutDest _ = HomeR  -- 登出后跳转目标,按需修改

    -- 重点:替换默认的认证路由路径
    authSettings = defaultAuthSettings
        { authRoutes =
            [ ( "entrar", getLoginR )               -- 替换原/login
            , ( "sair", postLogoutR )               -- 替换原/logout(可选)
            , ( "cadastrar", getRegisterR )         -- 替换原/email/register
            , ( "recuperar-senha", getForgotR )     -- 替换密码重置路径(可选)
            , ( "resetar-senha/#Text", getResetR )  -- 替换密码重置确认路径(可选)
            -- 其他需要的认证路由都可以在这里调整
            ]
        }

配置完成后,你的认证端点就会变成/entrar(登录)、/cadastrar(注册),完美符合需求。

如果需要兼容旧路径(比如用户可能收藏了旧链接),可以在主站点路由里加重定向规则:

mkYesod "App" [parseRoutes|
-- 其他路由...
/login LoginRedirectR GET
/email/register RegisterRedirectR GET
|]

然后实现对应的handler:

getLoginRedirectR :: Handler Html
getLoginRedirectR = redirect "/entrar"

getRegisterRedirectR :: Handler Html
getRegisterRedirectR = redirect "/cadastrar"

不需要兼容的话,这一步可以跳过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:57:53