Я использую MVC5 с последней версией Identity (2.1). Я пытаюсь создать заявку пользователя для facebook access_token. Я никогда не создавал претензии раньше, но моя другая функция Identity работает отлично, насколько я могу судить.Identity 2.0 Претензии не добавляются в базу данных
У меня есть эта строка кода в моих Startup.Auth.cs:
context.Identity.AddClaim(new Claim("urn:facebook:access_token",
context.AccessToken, xmlSchemaString, "Facebook"));
Полный кусок кода здесь, если Вам необходима дополнительная ссылка: Integrate facebooksdk with Identity 2.0
Если я ставлю перерыв в код в строке сразу после этой строки, я вижу, что все извлекается правильно, а самое главное - content.AccessToken
(это огромная строка). Однако он никогда не попадает в базу данных после успешного входа в систему.
В качестве теста, я попытался упростить его, изменив строку следующим образом:
context.Identity.AddClaim(new System.Security.Claims.Claim(ClaimTypes.Email, "[email protected]"));
Тот же результат, никаких ошибок, но ничего не добавляется в базу данных. Затем я попытался добавить эту строку коды в моем IdentityModels.cs именно там, где он говорит вам поставить пользовательские требования:
// Add custom user claims here
userIdentity.AddClaim(new Claim(ClaimTypes.DateOfBirth, "01/01/1972"));
того же результат ... нет ошибок и никогда не делаю его в базу данных. Может ли кто-нибудь подумать о какой-либо причине, какова моя проблема?
Единственное, что было в моей настройке Identity, это то, что я следил за статьей о том, как использовать имя пользователя вместо электронной почты (в качестве имени пользователя). Кроме того, я изменил имена таблиц Identity (например, UserClaims) в блоке OnModelCreating
, который, по-видимому, является довольно стандартной процедурой.
У меня такое чувство, что это будет какой-то новобранец, но на данный момент я в тупике. Буду признателен за любую оказанную помощь.
Это определенно работает, несмотря на то, что я полностью озадачен Identity и OWIN. Благодаря! – SumNone
Итак, просто для пояснения, похоже, что userIdentity.AddClaim() добавляет претензию к пользователю _in context_, но не сохраняется в базе данных. userManager.AddClaim() добавляет претензию к базе данных, но не к текущему контексту пользователя.Первый был бы хорош для тестирования, последний для создания претензий и настойчивости. – shloosh
@shloosh правильный! – trailmax