.netcore若依框架权限判断问题

YiSha.Web\YiSha.Admin.Web\Filter 里面的AuthorizeFilterAttribute

string[] authorizeList = Authorize.Split(','); TData<List> objMenuAuthorize = await new MenuAuthorizeBLL().GetAuthorizeList(user); List authorizeInfoList = objMenuAuthorize.Data.Where(p => authorizeList.Contains(p.Authorize)).ToList(); 这里判断有问题,authorizeList有两个一个是add一个是edit但是在authorizeInfoList出来就只有一个add了 objMenuAuthorize里面是有两个一个是add一个是edit的

. 使用 Any() 替换 Contains()(如果权限字符串可能包含多个权限值)

如果 p.Authorize 是一个由多个权限拼接的字符串,例如 "system:autojob:add,system:autojob:edit",你可以使用 Any() 来判断它是否包含 authorizeList 中的任意权限值:

List<MenuAuthorizeInfo> authorizeInfoList = objMenuAuthorize.Data
 .Where(p => authorizeList.Any(auth => p.Authorize.Contains(auth)))
 .ToList();
//List<MenuAuthorizeInfo> authorizeInfoList = objMenuAuthorize.Data.Where(p => authorizeList.Contains(p.Authorize)).ToList();