我正在尝试为 /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;
};
};
但我需要它添加中间件只是为了访问内置登录处理程序
或者你可以通过政策来实现:
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
};