asp.net - 从 IServiceCollection 获取服务到属性类的正确方法
问题描述
我正在尝试在我的应用程序中实现角色/权限系统,但我不知道如何在 m AuthorizeAttributeClass 中使用 DbContext。
这是我正在使用的代码:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Filters;
using HygeneApi.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
namespace HygeneApi.Authorization
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class PrivilegeAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter
{
private readonly string _privilege;
private readonly ConcreetDataContext _context;
public PrivilegeAuthorizeAttribute(string privilege)
{
_privilege = privilege;
}
public async void OnAuthorization(AuthorizationFilterContext context)
{
var user = context.HttpContext.User;
IServiceCollection serviceCollection = new ServiceCollection();
using (var contexte = new ConcreetDataContext(serviceCollection.GetService<DbContextOptions<ConcreetDataContext>>()))
{
var currentUser = await _context.Users.AsQueryable().FirstOrDefaultAsync(u => u.Email == user.Identity.Name);
Console.WriteLine(currentUser.FirstName);
}
}
}
我收到错误消息:“IServiceCollection 不包含 GetService 的定义......”
而且我也不能使用 Microsoft.Extensions.DependencyInjection.Abstractions :
我已经安装了包和所有东西,但我总是有类型或命名空间名称 Abstractions 在 Microsoft.Extensions.DependencyInjection 中不存在。
预先感谢您的帮助 !
解决方案
推荐阅读
- jquery - 如何更改已初始化数据表的 post 方法的 ajax url 和数据
- html - Angular HTML 类型推断没有按我的意愿工作
- java - 如何在jpql中的where条件下使用if else
- excel - Excel For 循环和一般 vba 指南
- google-cloud-platform - 一个 IP 的 GCP API 阈值
- java - 为什么全局对象数组进入方法时突然为空?
- c# - ASP.NET Core MVC 在回发时检查授权
- c++ - 我试图像输出一样显示全名,但是每当我点击进入程序时,只打印出 1 个单词而不是 2 个单词
- algorithm - 将x数量的人分成n个不同大小的房间的算法
- laravel - Laravel Echo/Pusher/Vue - /broadcasting/auth 返回空的 HTML 响应