새로 고침 토큰 흐름을 테스트 할 때 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