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

如何配置Guardian以排除/auth/*路由的身份验证要求

调整方案

你可以通过拆分路由管道的方式实现需求,具体修改如下:

1. 拆分路由管道定义

将原:api管道中的格式处理和鉴权逻辑拆分到两个独立管道,修改你的router.ex管道配置:

# 基础API管道,仅处理JSON格式
pipeline :api do
  plug :accepts, ["json"]
end

# 鉴权API管道,额外加载Guardian验证逻辑
pipeline :api_auth do
  plug MyApp.AuthAccessPipeline
end

2. 拆分路由scope分组

将不需要鉴权的/auth/*路由和需要鉴权的业务路由拆分到不同的scope,分别绑定对应管道:

# 无需鉴权的公开接口,仅走基础API管道
scope "/api/v1", MyAppWeb do
  pipe_through :api

  post "/auth/sign_up", UserController, :sign_up
  post "/auth/sign_in", UserController, :sign_in
  post "/auth/forgot_password", UserController, :forgot_password
end

# 需要身份验证的业务接口,同时走基础API+鉴权管道
scope "/api/v1", MyAppWeb do
  pipe_through [:api, :api_auth]

  resources "/users", UserController, except: [:new, :edit]
end

原理解释

原来的配置中所有/api/v1前缀的路由都统一走了包含鉴权逻辑的管道,因此所有请求都会强制校验身份。拆分后公开路由不会触发Guardian的验证逻辑,即可实现/auth/*路径免验证访问的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:21:03