在我的.NET Core 8 API中,接口如下:
//接口
public interface ITokenService {
string Generate(UserDetail user);
}
public interface IAccessTokenService : ITokenService { }
public interface IRefreshTokenService : ITokenService { }
}
刷新令牌服务类:-
public class RefreshTokenService : IRefreshTokenService {
private readonly ITokenGenerator _tokenGenerator;
private readonly JWTSettings _jwtSettings;
public RefreshTokenService(IOptions<JWTSettings> settings, ITokenGenerator tokenGenerator)
=> (_tokenGenerator, _jwtSettings) = (tokenGenerator, settings.Value);
public string Generate(UserDetail user) => _tokenGenerator.Generate(_jwtSettings.RefreshTokenSecret, _jwtSettings.Issuer, _jwtSettings.Audience, _jwtSettings.RefreshTokenExpiry);
}
AccessTokenService类:-
public class AccessTokenService : IAccessTokenService
{
private readonly ITokenGenerator _tokenGenerator;
private readonly JWTSettings _jwtSettings;
public AccessTokenService(ITokenGenerator tokenGenerator, JWTSettings jwtSettings) =>
(_tokenGenerator, _jwtSettings) = (tokenGenerator, jwtSettings);
public string Generate(UserDetail user)
{
List<Claim> claims = new List<Claim>() {};
return _tokenGenerator.Generate(_jwtSettings.AccessTokenSecret, _jwtSettings.Issuer, _jwtSettings.Audience, _jwtSettings.RefreshTokenExpiry,claims);
}
}
我已经注册了Statup.cs
个班级
services.AddScoped<ITokenService, RefreshTokenService>();
services.AddScoped<ITokenService, AccessTokenService>();
services.AddTransient<IAccessTokenService, AccessTokenService>();
services.AddTransient<IRefreshTokenService, RefreshTokenService>();
--------------Other services here---------------
我正在使用访问令牌和刷新令牌类的服务类
public class SomeClass : ISomeService{
private readonly IRefreshTokenService _refreshTokenService;
private readonly IAccessTokenService _accessTokenService;
public SomeClass(IRefreshTokenService refreshTokenService,
IAccessTokenService accessTokenService){
_refreshTokenService = refreshTokenService;
_accessTokenService = accessTokenService;
}
}
但得到了错误:
无法构造某些服务(验证服务描述符的ServiceType时出错: API.Services.IAccessTokenService Lifetime:Temporent ImplementationType:Services.AccessTokenService‘:try 激活’Services.AccessTokenService`时,无法解析类型为‘Models.JWTSettings’的服务.如何在此处解析依赖关系.