【发布时间】:2021-08-04 13:55:28
【问题描述】:
在 Manage.Data 项目中,我有管理存储库,并且在管理存储库中实现了服务调用。我有另一个项目 Manage.API,我有一个名为 Authenticate.cs 的类。我想从 Authenticate.cs 类文件中调用 GetLoginInfo() 方法。
private IManageRepository _memRepository;
_memRepository.GetLoginInfoAsync("","",Guid.Empty);
它不工作。谁能指导我。
CustomAuthenticate.cs
namespace CamManager_API
{
[AttributeUsage(AttributeTargets.Class)]
public class CustomAuthorization : Attribute, IAuthorizationFilter
{
private IManageRepository IManageRepository;
public CustomAuthorization(IManageRepository manageRepository)
{
this._manageRepository = manageRepository;
}
/// <summary>
/// This will Authorize User
/// </summary>
/// <returns></returns>
public void OnAuthorization(AuthorizationFilterContext filterContext)
{
if (filterContext != null)
{
Microsoft.Extensions.Primitives.StringValues authTokens;
filterContext.HttpContext.Request.Headers.TryGetValue("Authorization", out authTokens);
var _token = authTokens.FirstOrDefault();
if (_token != null)
{
string authToken = _token;
if (authToken != null)
{
var responseModel = _manageRepository.GetLoginInfoAsync("","",Guid.Empty);
}
}
else
{
}
}
}
public bool IsValidToken(string authToken)
{
//validate Token here
return true;
}
}
}
ManageRepository.cs
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Threading.Tasks;
namespace CamManager.DataAccess
{
public class ManageRepository : SqlRepository<Member>, IManageRepository
{
public ManageRepository(string connectionString) : base(connectionString) { }
public override async Task<Login> GetLoginInfoAsync(string firstName, string password, Guid accessKey)
{
using (var conn = GetOpenConnection())
{
var parameters = new DynamicParameters();
parameters.Add("@Firstname", firstName, System.Data.DbType.String);
parameters.Add("@Password", password, System.Data.DbType.String);
parameters.Add("@AccessKey", accessKey, System.Data.DbType.Guid);
return await conn.QueryFirstOrDefaultAsync<Login>("Login", parameters, commandType: CommandType.StoredProcedure);
}
}
public override async Task<IEnumerable<Member>> GetAllAsync()
{
}
public override async Task<Member> FindAsync(long id)
{
}
public override async Task<Result> InsertAsync(Member entity)
{
}
public override async Task<Result> UpdateAsync(Member entity)
{
}
public override async Task<Result> DeleteAsync(long id)
{
}
}
}
【问题讨论】:
-
什么不起作用?
-
收到错误“对象引用未设置为实例”
-
你有没有初始化过
_memRepository?在我看来你会很难使用 C#,我建议你阅读教程,你需要了解对象、接口等。 -
正如其他人所提到的,很难看到您的实现,因为这里没有很多代码。你有更完整的例子和/或完整的错误吗?
-
大家好,我已经实现了下面的代码。但还没上传。
标签: c# asp.net asp.net-core webapi