MVC客户端:ASP.NET CORE 3身份(具有支架身份)。 身份服务器4(v3)。
由quickstart创建。
MVC客户端启动具有:
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
AddIdentity帮助我注册新用户。
当我尝试使用Identity Server登录MVC客户端时,出现无限循环。我read,那需要删除AddIdentity,因为我的客户端正在连接到ID服务器。 当我删除AddIdentity时,登录效果很好。
但是我的MVC客户端已经为用户注册添加了身份标识。尝试打开用户注册表单(http://localhost:5002/Identity/Account/Register)时,出现错误:
InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]' while attempting to activate 'UserRegistration.Areas.Identity.Pages.Account.RegisterModel'.
当我尝试不使用Identity UserManager注册时:
services.AddScoped<UserManager<ApplicationUser>>();
services.AddScoped<SignInManager<ApplicationUser>>();
我收到其他错误:
Unhandled exception. System.AggregateException: Some services are not able to be constructed
(Error while validating the service descriptor 'ServiceType:
Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]
Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]':
Unable to resolve service for type 'Microsoft.AspNetCore.Identity.IUserStore`1[SharedIdentity.Models.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]'.)
(Error while validating the service descriptor 'ServiceType: Microsoft.AspNetCore.Identity.SignInManager`1[SharedIdentity.Models.ApplicationUser] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.SignInManager`1[SharedIdentity.Models.ApplicationUser]': Unable to resolve service for type 'Microsoft.AspNetCore.Identity.IUserStore`1[SharedIdentity.Models.ApplicationUser]'
while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]'.)
---> System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]':
Unable to resolve service for type 'Microsoft.AspNetCore.Identity.IUserStore`1[SharedIdentity.Models.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]'.
---> System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Identity.IUserStore`1[SharedIdentity.Models.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]'.
......
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Identity.IUserStore`1[SharedIdentity.Models.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[SharedIdentity.Models.ApplicationUser]'.
at
也许我走错路了?我需要我的MVC客户端可以注册用户,并可以使用Identity Server登录用户。
答案 0 :(得分:1)
这不能像“ 解决问题”中那样回答问题。但这确实解决了设置用户管理的问题,对于@hdoitc来说,这似乎是可以接受的答案:
首先,客户端不应该访问身份模型。这是IdentityServer的责任。相同的登录次数。用户不是登录客户端网站而是登录IdentityServer网站。对于注册,用户是在IdentityServer中注册的,而不是在客户端中注册的。
IdentityServer对用户进行身份验证并授权客户端。因此,您需要将用户发送到IdentityServer网站进行登录和注册。将用户视为未绑定到一个客户端的实体。凭借其帐户,它可以使用任何客户端,除非授权被拒绝,尽管IdentityServer是not recommended的用户授权:
PolicyServer是我们建议的用户授权。
如果您有兴趣,请here's链接。
默认情况下,Identity的UI并不多,因为IdentityServer实际上不是关于用户管理的。但是有一些support for asp.net Identity。
您可以随时添加视图,因为这是asp.net身份。我建议您按照此处记录的方式创建一个新项目和scaffold the Identity个文件,并使用所需的任何内容,或者看看sources here。如果我没记错的话,那么RazorPages就有UI,但是Mvc没有。
您可以通过自定义视图来改善IdentityServer中的用户体验,例如添加徽标,通过由clientId标识客户端来使用主题。