當測試刷新令牌流時,使用指定UseOpenIddict方法(在此情況下)的自定義密鑰的重載簽名時出現以下錯誤。OpenIddict - 使用自定義密鑰時刷新令牌流導致實體錯誤
InvalidOperationException:未找到實體類型'OpenIddictAuthorization'。確保實體類型已被添加到模型中。
有趣的是,如果我不使用重載的方法來使用int作爲主鍵,它會正常工作,我收到刷新令牌。只有當我使用過載時,我收到此錯誤。
這裏處於啓動
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<RouteManagerContext>(options =>
{
options.UseSqlServer(AppSettings.RouteManagerContext);
options.UseOpenIddict<int>();
});
services.AddIdentity<ApplicationUser, ApplicationRole>().AddEntityFrameworkStores<RouteManagerContext>().AddDefaultTokenProviders();
services.Configure<IdentityOptions>(options =>
{
options.ClaimsIdentity.UserNameClaimType = OpenIdConnectConstants.Claims.Name;
options.ClaimsIdentity.UserIdClaimType = OpenIdConnectConstants.Claims.Subject;
options.ClaimsIdentity.RoleClaimType = OpenIdConnectConstants.Claims.Role;
});
services.AddOpenIddict(options =>
{
options.AddEntityFrameworkCoreStores<RouteManagerContext>();
options.AddMvcBinders();
options.EnableTokenEndpoint("/connect/token");
options.AllowPasswordFlow()
.AllowRefreshTokenFlow()
.SetAccessTokenLifetime(TimeSpan.FromMinutes(1))
.SetRefreshTokenLifetime(TimeSpan.FromMinutes(20160))
options.DisableHttpsRequirement();
});
services.AddAuthentication()
.AddOAuthValidation()
.AddFacebook(o => { o.ClientId = AppSettings.FacebookAppID; o.ClientSecret = AppSettings.FacebookAppSecret; });
services.AddDocumentation(AppSettings);
}
上下文聲明,這裏是我的上下文
public class RouteManagerContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>
{
public RouteManagerContext(DbContextOptions<RouteManagerContext> options) : base(options) { }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
的應用似乎因爲我有在openiddict需求的數據庫中的所有表是正確配置:應用程序,授權,令牌等...
所有示例似乎都以相同的方式配置。 任何想法?
非常感謝你......沒有意識到我必須在AddOpenIddict方法中匹配該定義。現在完美運作。 – Geekn