无需企业授权,如何禁用Strapi默认登录页并跳转至strapi-plugin-sso
禁用Strapi默认登录页并跳转至SSO登录页(非企业版方案)
完全可以通过自定义中间件实现需求,无需依赖Strapi企业版授权。以下是具体实现步骤:
1. 创建自定义重定向中间件
在Strapi项目的src/middlewares目录下新建redirect-sso-login文件夹,创建index.js文件,写入以下代码:
module.exports = (config, { strapi }) => { return async (ctx, next) => { // 匹配Strapi v4版本默认登录页路径(旧版本可能为/admin/login) const isDefaultLoginPage = ctx.path === '/admin/auth/login'; // 匹配默认登录接口的POST请求(可选,彻底禁用默认登录API) const isDefaultLoginApi = ctx.path === '/admin/auth/login' && ctx.method === 'POST'; // 判断用户是否未登录(避免已登录用户被强制跳转) const isUnauthenticated = !ctx.state.user && !ctx.request.headers.authorization; if ((isDefaultLoginPage || isDefaultLoginApi) && isUnauthenticated) { // 重定向到strapi-plugin-sso的登录页,路径根据插件实际配置调整 // 常见路径为/admin/sso/login或/admin/sso/oidc/login return ctx.redirect('/admin/sso/login'); } await next(); }; };
2. 注册自定义中间件
修改项目根目录下的config/middlewares.js,将自定义中间件添加到队列中,确保在strapi::admin之前执行:
module.exports = [ 'strapi::errors', 'strapi::security', 'strapi::cors', 'strapi::poweredBy', 'strapi::logger', 'strapi::query', 'strapi::body', 'strapi::session', 'strapi::favicon', 'strapi::public', // 加入自定义重定向中间件 './middlewares/redirect-sso-login', 'strapi::admin', ];
3. 验证与测试
- 重启Strapi服务
- 访问原默认登录页(如
http://your-strapi-domain/admin/auth/login),确认是否自动跳转到SSO登录页面 - 测试SSO登录流程,确保正常完成身份验证并进入Strapi后台
注意事项
- 确认strapi-plugin-sso的实际登录路径:不同版本的插件可能使用不同端点,可查看插件文档或Strapi后台路由列表确认
- 若需保留默认登录接口给特定场景,可删除代码中
isDefaultLoginApi相关判断逻辑 - 测试前建议清除浏览器缓存,避免旧页面缓存导致跳转不生效
内容的提问来源于stack exchange,提问作者Dara
相关产品推荐
相关产品推荐

