@@ -3,11 +3,14 @@ import compose from 'koa-compose';
33import { pathMatching } from 'egg-path-matching' ;
44import { EggCore , MiddlewareFunc } from '@eggjs/core' ;
55import securityMiddlewares from '../../lib/middlewares/index.js' ;
6+ import type { SecurityMiddlewareName } from '../../config/config.default.js' ;
67
78export default ( _ : unknown , app : EggCore ) => {
89 const options = app . config . security ;
910 const middlewares : MiddlewareFunc [ ] = [ ] ;
10- const defaultMiddleware = options . defaultMiddleware . split ( ',' ) . map ( m => m . trim ( ) ) . filter ( m => ! ! m ) ;
11+ const defaultMiddlewares = typeof options . defaultMiddleware === 'string'
12+ ? options . defaultMiddleware . split ( ',' ) . map ( m => m . trim ( ) ) . filter ( m => ! ! m ) as SecurityMiddlewareName [ ]
13+ : options . defaultMiddleware ;
1114
1215 if ( options . match || options . ignore ) {
1316 app . coreLogger . warn ( '[@eggjs/security/middleware/securities] Please set `match` or `ignore` on sub config' ) ;
@@ -19,8 +22,8 @@ export default (_: unknown, app: EggCore) => {
1922 options . csrf . cookieDomain = ( ) => originalCookieDomain ;
2023 }
2124
22- defaultMiddleware . forEach ( middlewareName => {
23- const opt = Reflect . get ( options , middlewareName ) ;
25+ defaultMiddlewares . forEach ( middlewareName => {
26+ const opt = Reflect . get ( options , middlewareName ) as any ;
2427 if ( opt === false ) {
2528 app . coreLogger . warn ( '[egg-security] Please use `config.security.%s = { enable: false }` instead of `config.security.%s = false`' , middlewareName , middlewareName ) ;
2629 }
@@ -49,10 +52,7 @@ export default (_: unknown, app: EggCore) => {
4952 opt . matching = pathMatching ( opt ) ;
5053
5154 const createMiddleware = securityMiddlewares [ middlewareName ] ;
52- if ( ! createMiddleware ) {
53- throw new TypeError ( `[@eggjs/security/middleware/securities] Can't find middleware ${ middlewareName } ` ) ;
54- }
55- const fn = createMiddleware ( opt , app ) ;
55+ const fn = createMiddleware ( opt ) ;
5656 middlewares . push ( fn ) ;
5757 app . coreLogger . info ( '[@eggjs/security/middleware/securities] use %s middleware' , middlewareName ) ;
5858 } ) ;
0 commit comments