没有配置身份验证处理程序来验证这个方案:Microsoft.AspNet.Identity.External接口。我正在尝试实现openiddict-core,在其中找到本地帐户,并且我还希望用户使用外部登录,例如google。我已经设置好了一切,但是当我尝试实施谷歌身份验证时,我调用了代码varinfo=await_signInManager.GetExternalLoginInfoAsync();我在标题中收到错误消息。在客户端,我使用此处找到的Satellizer,它负责打开google提示窗口并将回调发送到我的AuthControllerGoogle方法,这是您在其他mvc6示例中看到的正常ChallengeResult代码。我已经编写了代码来手动获取用户的详细信息,但我想我会使用我构建的signInManager而不是循环轮...我可能没有正确设置它,因为所有示例似乎都在使用cookie,我猜是因为它们是mvc6web应用程序,而不是api。我不想使用cookie,但这可能是我的问题。现在来一些代码。startup.cspublicvoidConfigureServices(IServiceCollectionservices){//将MVC服务添加到服务容器中。服务.AddMvc();services.AddEntityFramework().AddSqlServer().AddDbContext(options=>options.UseSqlServer(_configuration["Data:DefaultConnection:ConnectionString"]));services.AddIdentity().AddEntityFrameworkStores().AddDefaultTokenProviders().AddOpenIddict();//注册Identity服务后添加OpenIddict服务。}publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv,ILoggerFactoryloggerFactory){//使用jwt承载认证app.UseJwtBearerAuthentication(options=>{options.AutomaticAuthenticate=true;options.AutomaticChallenge=true;options.RequireHttpsMetadata=false;options.Audience="http://localhost:5000/";options.Authority="http://localhost:5000/";});//在注册OpenIddict之前添加您需要的所有外部提供者:app.UseGoogleAuthentication(options=>{options.AutomaticAuthenticate=true;//options.AutomaticChallenge=true;options.ClientId="XXX";options.ClientSecret="XXX";});//app.UseFacebookAuthentication();app.UseOpenIddict();//启用所有静态文件中间件app.UseStaticFiles();//为视图控制器启用Mvc,并//默认所有到Home控制器的路由app.UseMvc(options=>{options.MapRoute(name:"default",template:"{*url}",defaults:new{="主页",action="索引"});});}AuthController.cspublicclassAuthController:Controller{privateUserManager_userManager;私人登录管理器_signInManager;私人ApplicationDbContext_applicationDbContext;publicAuthController(UserManageruserManager,SignInManagersignInManager,ApplicationDbContextapplicationDbContext){_userManager=userManager;_signInManager=signInManager;_applicationDbContext=applicationDbContext;}[HttpPost("google")]公共异步任务谷歌Async([FromBody]ExternalLoginModelmodel){//这是错误发生的地方varinfo=await_signInManager.GetExternalLoginInfoAsync();返回确定();}}ExternalLoginModel.cs公共类ExternalLoginModel{publicstringCode{}get;放;字符串ClientId{得到;放;}公共字符串RedirectUri{得到;放;您是否尝试过通过添加app.UseIdentity();来注册身份中间件?app.UseIdentity();在注册GoogleAuthentication中间件之前?以上是C#学习教程:没有配置认证处理程序来验证方案:Microsoft.AspNet.Identity.External分享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
