chore: When matching authz's and/or rules, check the simple ones first to improve efficiency

This commit is contained in:
某文 2023-04-17 17:23:39 +08:00
parent 03ea04827d
commit e9e0ae7f0a
2 changed files with 3 additions and 3 deletions

View File

@ -1,4 +1,4 @@
%% This additional config file is used when the config 'cluster.proto_dis' in emqx.conf is set to 'inet_tls'. %% This additional config file is used when the config 'cluster.proto_dist' in emqx.conf is set to 'inet_tls'.
%% Which means the EMQX nodes will connect to each other over TLS. %% Which means the EMQX nodes will connect to each other over TLS.
%% For more information about inter-broker security, see: https://docs.emqx.com/en/enterprise/v5.0/deploy/cluster/security.html %% For more information about inter-broker security, see: https://docs.emqx.com/en/enterprise/v5.0/deploy/cluster/security.html

View File

@ -185,7 +185,7 @@ match_who(#{peerhost := IpAddress}, {ipaddrs, CIDRs}) ->
match_who(ClientInfo, {'and', Principals}) when is_list(Principals) -> match_who(ClientInfo, {'and', Principals}) when is_list(Principals) ->
lists:foldl( lists:foldl(
fun(Principal, Permission) -> fun(Principal, Permission) ->
match_who(ClientInfo, Principal) andalso Permission Permission andalso match_who(ClientInfo, Principal)
end, end,
true, true,
Principals Principals
@ -193,7 +193,7 @@ match_who(ClientInfo, {'and', Principals}) when is_list(Principals) ->
match_who(ClientInfo, {'or', Principals}) when is_list(Principals) -> match_who(ClientInfo, {'or', Principals}) when is_list(Principals) ->
lists:foldl( lists:foldl(
fun(Principal, Permission) -> fun(Principal, Permission) ->
match_who(ClientInfo, Principal) orelse Permission Permission orelse match_who(ClientInfo, Principal)
end, end,
false, false,
Principals Principals