如何在 Strapi 中添加用于 /auth/local 登录的中间件?

问题描述 投票:0回答:1

我正在尝试为 /auth/local 登录添加额外的验证,有没有办法将中间件添加到 /api/auth/local 路由而不将其添加到全局配置中间件?

我尝试将其添加到应用程序级别/config/middlewares

import { Strapi } from "@strapi/strapi";

export default (config, { strapi }: { strapi: Strapi }) => {
  
  return async (ctx, next) => {
    if (ctx.request.url === "/api/auth/local" && ctx.request.method === 'POST') {
     // Validations

    await next();
    return;
  };
};

但我需要它添加中间件只是为了访问内置登录处理程序

backend strapi
1个回答
0
投票

或者你可以通过政策来实现:

src/extensions/user-permissions/strapi-server.ts:

import '@strapi/strapi';
export default (plugin: any) => {
  plugin.routes['content-api'].routes = plugin.routes['content-api'].routes.map((item) => {
    if (item.method == 'POST' && item.path == '/auth/local') {
      item.config.policies = ['global::authPolicy'];
    }
    return item;
  });
  return plugin;
};

src/policies/authPolicy.ts:

import {Strapi} from '@strapi/strapi';
export default (policyContext, config, {strapi}: {strapi: Strapi}) => {
  console.log(JSON.stringify(policyContext.request.body));
  return true; // return false
};
© www.soinside.com 2019 - 2024. All rights reserved.