Я использую вход в систему Google для своего основного сайта .net.
В этом коде
var properties = signInManager.ConfigureExternalAuthenticationProperties("Google", redirectUrl);
return new ChallengeResult("Google", properties);
Мне нужен signInManager
, который (в примере кода) это:
private SignInManager<AppUser> signInManager;
Я ввожу его через конструктор, а затем получаю такую ошибку:
Unable to resolve service for type 'Microsoft.AspNetCore.Identity.SignInManager1[AppUser]' while attempting to activate 'AccountController'.
Googling узнал, что я должен включить это
services.AddIdentity<AppUser, IdentityRole>()
.AddDefaultTokenProviders();`
Но это дает мне эту ошибку:
Unable to resolve service for type 'Microsoft.AspNetCore.Identity.IUserStore1[AppUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.AspNetUserManager1[AppUser]'.
И в этот момент я получаю совет добавить это:
.AddEntityFrameworkStores<ApplicationDbContext>()
Но тогда я заблудился, потому что зачем SignInManager
нужен IUserStore
, и должен ли я добавить
UserStore
и DBContext
и магазин EntityFramework
, когда я не буду использовать его (для входа в Google)?
Итак, вопрос: могу ли я также войти в систему в Google без магазина Entityframework?
Спасибо за ответ. Дело не в том, что я не хочу использовать EF (например, я хочу использовать другого поставщика), а в том, что мне не нужен поставщик базы данных, потому что я хочу использовать именованных (настраиваемых в файле json) пользователей. Итак, в файле конфигурации у меня есть список из 5 имен пользователей, и с помощью входа в Google я хочу разрешить им вход. В данном случае я не вижу смысла использовать поставщик EF, поэтому подумал о том, чтобы не использовать его.
Я также взглянул на ваш код битбакета, и обе строки кода app.UseIdentity(); and app.UseGoogleAuthentication
были помечены как устаревшие.
Если вы не хотите использовать Entity Framework, вам необходимо использовать собственный поставщик хранилища: docs.microsoft.com/en-us/aspnet/identity/overview/extensibil ity /…. Если вы хотите использовать Entity Framework, но получаете некоторую ошибку (как вы описали), вы можете сослаться на мою исходную демонстрацию: bitbucket.org/tuanv2t/net-core-demo/src/master/NetCoreDemo/…