Вопросы с тегами [asp.net-identity-3]

0

голосов
0

ответ
18

Просмотры

Как интегрировать Social Войти с помощью существующего .Net ядра Web API бэкэнда и угловой SPA фронтэнда с рабочей OpenIddict пользователя / паролем и каналом передачи маркерами

TL; DR Вопрос: как реализовать социальный логин (OAuth2 потока авторизации) с существующим приложением SPA / Web API, который основан на личных данных, пользователя / пароль, однонаправленного маркера аутентификации? У меня есть существующее приложение, который имеет: Backend: .Net Core 2 Web API с идентификацией и OpenIddict услугами, сконфигурированное, с процессом аутентификации рабочей на основе пароля пользователя / вызов для однонаправленных маркеров. Пользователи сохраняются с Идентичность (AspNetUsers). Часть кода Startup.cs // Зарегистрировать OpenIddict услуги. services.AddOpenIddict () .AddCore (опции => {options.UseEntityFrameworkCore () UseDbContext ();.}) .AddServer (опции => {options.UseMvc (); options.EnableTokenEndpoint ( "/ подключить / маркер"); опции .AllowPasswordFlow (); options.AllowRefreshTokenFlow (); опция. AcceptAnonymousClients (); options.RegisterScopes (OpenIdConnectConstants.Scopes.OpenId, OpenIdConnectConstants.Scopes.Email, OpenIdConnectConstants.Scopes.Phone, OpenIdConnectConstants.Scopes.Profile, OpenIdConnectConstants.Scopes.OfflineAccess, OpenIddictConstants.Scopes.Roles); }) .AddValidation (); , Frontend: SPA Угловое 7 приложение, которое потребляет этот бэкэнд API и токенов авторизации Таким образом, в основном текущие настройки, пользователь вводит пользователь / пароль в SPA, который вызывает бэкенд / подключения / маркер конечной точки, которая проверяет учетные данные и генерирует маркер для клиента. А теперь мне нужно интегрировать Social Login (OAuth2 поток авторизации), так что пользователь выбирает логин с провайдером, перенаправляется на страницу авторизации поставщиков, получает перенаправляется обратно к моему заявлению, которое должно создать идентификатор пользователя и сохранять данные идентичности UserLoginInfo и предоставить мой маркер приложения, так что пользователь может войти в систему. Я понимаю, поток авторизации OAuth2, что необходимо запросить код авторизации, а затем Обмен код авторизации для доступа Токена для этого провайдера. Я также знаю, что этот поток должен использовать бэкенд, когда он использует конфиденциальную информацию, как client_secret, которые не могут быть сохранены в стороне клиента. Но в какой-то момент пользователь должен взаимодействовать с веб-интерфейсе, так, соединяющим эти части, кажется, очень трудно, учитывая, что они широко используются технологии. Все практические примеры, которые я нашел на Google, были с помощью приложения .Net ядра MVC. Я также нашел эту статью ASP.N Co, 3. 0 Preview 4 - Аутентификация и авторизация для ООР, что кажется перспективным, но все еще в режиме предварительного просмотра 4. Я уже создал социальные приложения провайдеров и я client_id, client_secret. Кроме того, зарегистрировавшись мои других страниц URL. То, что я пытался без успеха было: В пользователь фронтэнда выбирает войти в системе с социальным провайдером, пользователь перенаправляется на страницу авторизации провайдера, аутентифицирует себя и перенаправляется от поставщика к моему фронтэнду URL (redirect_uri) с кодом поставщика тогда мой интерфейс называет мой бэкенд / Связь / маркер существующей конечной точки прохождения выбранного поставщика и полученный код, конечная точка была запрограммирована, чтобы получить у поставщика и код также, то мой бэкенд называет получить маркер доступа URL-адрес проводки «grant_type», «authorization_code» «код», код «redirect_uri провайдера "" providerSecret и получает StatusCode: 401, ReasonPhrase: «Несанкционированный» ответ Что я делаю неправильно? Это было очень трудно время, чтобы получить эту работу. То, что работало, но это не то, что мне нужно неявный 2 шага поток авторизации, используя внешний интерфейс для вызовов аутентификации провайдера и вызов бэкэнда, чтобы получить мой предъявителю маркера и создать идентификатор пользователь. С этим пользователем установка сделал успешную регистрацию с помощью социального провайдера, к сожалению, это не то, что мне нужно EDIT: Составила схему того, что будет реализован, оно терпит неудачу на этапе 5/6 с StatusCode: 401, ReasonPhrase: «Несанкционированные» и дальнейшие шаги не завершены. providerSecret и получает StatusCode: 401, ReasonPhrase: «Несанкционированный» ответ Что я делаю неправильно? Это было очень трудно время, чтобы получить эту работу. То, что работало, но это не то, что мне нужно неявный 2 шага поток авторизации, используя внешний интерфейс для вызовов аутентификации провайдера и вызов бэкэнда, чтобы получить мой предъявителю маркера и создать идентификатор пользователь. С этим пользователем установка сделал успешную регистрацию с помощью социального провайдера, к сожалению, это не то, что мне нужно EDIT: Составила схему того, что будет реализован, оно терпит неудачу на этапе 5/6 с StatusCode: 401, ReasonPhrase: «Несанкционированные» и дальнейшие шаги не завершены. не то, что мне нужно неявный 2 шага поток авторизации, используя внешний интерфейс для вызовов аутентификации провайдера и вызов бэкэнда, чтобы получить мой предъявителю маркера и создать идентификатор пользователь. С этим пользователем установка сделал успешную регистрацию с помощью социального провайдера, к сожалению, это не то, что мне нужно EDIT: Составила схему того, что будет реализован, оно терпит неудачу на этапе 5/6 с StatusCode: 401, ReasonPhrase: «Несанкционированные» и дальнейшие шаги не завершены. не то, что мне нужно неявный 2 шага поток авторизации, используя внешний интерфейс для вызовов аутентификации провайдера и вызов бэкэнда, чтобы получить мой предъявителю маркера и создать идентификатор пользователь. С этим пользователем установка сделал успешную регистрацию с помощью социального провайдера, к сожалению, это не то, что мне нужно EDIT: Составила схему того, что будет реализован, оно терпит неудачу на этапе 5/6 с StatusCode: 401, ReasonPhrase: «Несанкционированные» и дальнейшие шаги не завершены.
Fernando Ribeiro
1

голосов
0

ответ
261

Просмотры

Анти вопрос Подделка печенье после SignOut из IdentityServer4

Я разрабатываю решение с IdentityServer4 и ASP.NET Ядром 2.0.5. После входа в систему с помощью HttpContext.SignOutAsync, пользователь может перейти на форму входа в систему снова и попытаться войти в систему. Тем не менее, сообщение об ошибке я получаю после того, как форму поста в консоли заключается в следующем: antiforgery печенье маркера и запросить маркер не совпадают. Я перепробовал все варианты я смог найти в Интернете. Моя конфигурация выглядит следующим образом: IdentityServer4 использует сертификат подписи (самоподписанного) ASPNET настроен на использование данных, защита от Azure Blob Storage Вход осуществляется с HttpContext.SignInAsync Logout выполняется с HttpContext.SignOutAsync Иногда после второй или третий раз попытаться Логин, он проверяет antiforgery печенье успешно. Я выйти из системы и перейти на страницу входа, вопрос всплывает снова. Я отчаянно пытается разные вещи.
Gorgi Rankovski
1

голосов
0

ответ
184

Просмотры

Retrive randomly generated session id coockie name asp.net

Я хочу изменить asp.net ASP.NET_SessionId имя куков с некоторой случайной строкой, а также хэшем этого значения. Я сделал так, но проблема в том, что я не знаю, как получить `ASP.NET_SessionId и проверить, если хэшируются значение допустимо или нет. Цель состоит в том, чтобы предотвратить угон сессий. app.UseCookieAuthentication (новые CookieAuthenticationOptions {AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = новый PathString ( "/ Account / Логин"), Provider = новый CookieAuthenticationProvider {OnValidateIdentity = SecurityStampValidator.OnValidateIdentity (validateInterval: TimeSpan.FromMinutes (15), regenerateIdentity: (менеджер , пользователь) => пользователь. GenerateUserIdentityAsync (менеджер))}, CookieName = Utility.Globals.GenrateRandomString (10),}); Это, как я изменить `ASP.NET_SessionId». Я также проверить хэш значения с ниже защищен кодом ничтожной Application_BeginRequest (объект отправителя, EventArgs е) {// Проверяем Если новая сессия или нет, если нет, то делать дополнительные проверки, если (Request.Cookies [ «ASP.NET_SessionId»] ! = NULL && Request.Cookies [ "ASP.NET_SessionId"] Value = NULL) {строка newSessionID = Request.Cookies [ "ASP.NET_SessionId"] значение.!. // Проверьте допустимую длину вашего сгенерированного ID сессии, если (newSessionID.Length Я также проверить хэш значения с ниже защищен кодом ничтожной Application_BeginRequest (объект отправителя, EventArgs е) {// Проверяем Если новая сессия или нет, если нет, то делать дополнительные проверки, если (Request.Cookies [ «ASP.NET_SessionId»] ! = NULL && Request.Cookies [ "ASP.NET_SessionId"] Value = NULL) {строка newSessionID = Request.Cookies [ "ASP.NET_SessionId"] значение.!. // Проверьте допустимую длину вашего сгенерированного ID сессии, если (newSessionID.Length Я также проверить хэш значения с ниже защищен кодом ничтожной Application_BeginRequest (объект отправителя, EventArgs е) {// Проверяем Если новая сессия или нет, если нет, то делать дополнительные проверки, если (Request.Cookies [ «ASP.NET_SessionId»] ! = NULL && Request.Cookies [ "ASP.NET_SessionId"] Value = NULL) {строка newSessionID = Request.Cookies [ "ASP.NET_SessionId"] значение.!. // Проверьте допустимую длину вашего сгенерированного ID сессии, если (newSessionID.Length ! Значение = NULL) {строка newSessionID = Request.Cookies [ "ASP.NET_SessionId"] значение. // Проверьте допустимую длину вашего сгенерированного ID сессии, если (newSessionID.Length ! Значение = NULL) {строка newSessionID = Request.Cookies [ "ASP.NET_SessionId"] значение. // Проверьте допустимую длину вашего сгенерированного ID сессии, если (newSessionID.Length
Hadi Mohammadi
1

голосов
0

ответ
34

Просмотры

ASP Идентичность: Нетерпеливые загрузки для пользователя

Я добавил propertry к IdentityUser имени ClientID, что должным образом связанному с таблицей клиентов по FK. Теперь я хочу, чтобы retrive пользователя с его именем клиента (из таблицы клиентов). Как я создать Включить функцию, что в context.Users? общественное ActionResult пользователи (строка фильтр = "все") {контекст = новый IdentityContext (); AllUsers вар = context.Users.ToList (); Список модель = allusers.Select (пользователь => новый UserViewModel {Имя пользователя = user.username, FULLNAME = user.FirstName + " "+ user.LastName, Id = user.id, роли = string.join (",", UserManager. GetRoles (user.id))}) ToList ().; вернуться View (модель); }
shdr
1

голосов
1

ответ
27

Просмотры

get user from cookie and sign that user in mvc Identity

У меня есть веб-проект Asp MVC. Для того, чтобы продать продукт, пользователь должен зарегистрироваться или войти в свой веб-сайт. После выбора своего продукта, пользователь будет перенаправлять на банковский шлюз через метод PaymentAction: общественный PaymentAction String (Сделка Model) {попробуйте {Платежный акушер = новый платеж (); Model.amount = 100000.ToString (); Строка результат = ob.pay (Model.amount); //, User.Identity.GetUserId () / * результат вар является строкой, которая содержит ответ от pay.ir/send, который содержит: статус, ТрансИД, ERRORCODE, ErrorMessage и все вещи, которые существуют в JsonParameter * / JsonParameters Parmeters = JsonConvert.DeserializeObject (результат); // в этой точке, платеж был успешным, и вы можете добавить информацию в базу данных, если (Parmeters.status == 1) {Response.Redirect ( «https://pay.ir/payment/gateway/» + Parmeters.transId) ; } Еще {возвращение "Код ошибки:" + Parmeters.errorCode + сообщение "" + "" + Parmeters.errorMessage; } вернуть ""; } Задвижка (Исключение ехр) {возвращение "ошибка" + exp.Message; }} После оплаты, пользователь перенаправляет на мой сайт по следующему URL-адресу: http://www.mymvcapp.com/HelpMeToBuildMyExtraordinaryYear/VerifyPayment и вот метод VerifyPayment: [HttpPost] [AllowAnonymous] общественного ActionResult VerifyPayment (VerifyResult Vresult) {попробуйте {если (string.IsNullOrEmpty (Request.Form [ "ТрансИД"])) {Оплата О.Б. = новый оплаты (); Строка результат = ob.verify (. Request.Form [ "ТрансИд"] ToString ()); JsonParameters Parmeters = JsonConvert.DeserializeObject (результат); если (Parmeters.status == 1) {вар = идентификатор пользователя User.Identity.GetUserId (); вар пользователь = db.Users.Where (и => u.Id == идентификатор пользователя) .FirstOrDefault (); user.SuccessfullPayment = TRUE; user.FactorNo = User.Identity.GetUserId (); user.TraceNo = Request.Form [ "traceNumber"]; user.TransId = int.Parse (Request.Form [ "ТрансИд"]); user.CardNo = Request.Form [ "cardNumber"]; user.PurchasedDate = DateTime.Now; user.State = Parmeters.status; user.Message = Request.Form [ "сообщение"]; db.Entry (пользователь) .State = System.Data.Entity.EntityState.Modified; db.SaveChanges (); Vresult.success = TRUE; Vresult.TransActionID + = Request.Form [ "ТрансИд"] ToString (). Vresult.Amount + = Parmeters.amount.ToString (); Vresult.SuccessMessage = "успешный платеж"; вернуться RedirectToAction ( "Index", "DownloadEbook", новый {traceNumber = user.TraceNo, factorNumber = user.FactorNo, purchaseDate = Utils.Funcs.ObtainPersianDate ((DateTime) user.PurchasedDate)}); } Еще {Vresult.error = TRUE; Vresult.ErrorMessage = "код ошибки" + Parmeters.errorCode + "" + "Errr meesafe" + Parmeters.errorMessage; }}} Задвижка (Исключение ех) {Vresult.error = TRUE; Vresult.ErrorMessage = ex.Source + "\ т" + ex.InnerException + "\ т" + ex.Message + "эээ"; } Вернуться View (новые AllNeededModels () {VerifyResult = Vresult}); как мы можем видеть, пользователь должен войти в систему, для того, чтобы завершить процесс продажи. но после того, как перенаправлять из банка выше URL (VerifyPayment), пользователь не вошел в систему, и код будет возвращать нулевое исключение. вопрос в том, как я должен держать пользователь вошел после перенаправления из банка на мой сайт? или как можно получить пользователь от печенья и знак того, что пользователь в?
Xeta7
1

голосов
1

ответ
44

Просмотры

ASP Идентичность Проблема не authenticting

Поэтому я использую ASP идентичность. Я настроил профиль с добавлением IsEnabled, так что я знаю, что если пользователь активен или нет. Это прекрасно работает, и база данных обновляется без проблем. Таким образом, после исследования, я увидел, что мне нужно переопределить «общественное асинхронное переопределение Task PasswordSignInAsync», что я могу проверить для свойства IsEnabled. Это прекрасно работает, а потому, что он проходит надлежащую SigninStatus, что мне нужно на странице регистрации. IdentifyConfig.cs Файл: общественное асинхронное переопределение Task PasswordSignInAsync (строка имя_пользователь, строка пароль, BOOL RememberMe, BOOL shouldLockout) {вар пользователь = UserManager.FindByEmailAsync (Username) .Result; если (user.IsEnabled = ложь!) {возвращение ждут Task.FromResult (SignInStatus.Success); } Возвращение ждут Task.FromResult (SignInStatus.LockedOut); } На странице Логина:. Защищено недействительный LogIn (объект отправитель, EventArgs е) {если (IsValid) {// Проверка менеджера паролей пользователя уага = Context.GetOwinContext () GetUserManager (); вар signinManager = Context.GetOwinContext () GetUserManager (). // Это doen't неудачи счетчик входа в направлении блокировки учетной записи // Чтобы включить сбои пароля для запуска блокировки, изменение shouldLockout: истинный результат // переменная = signinManager.PasswordSignIn (Email.Text, Password.Text, RememberMe.Checked, shouldLockout: ложный); Результат переменная = signinManager.PasswordSignInAsync (Email.Text, Password.Text, RememberMe.Checked, shouldLockout: ложь); переключатель (result.Result) {случай SignInStatus.Success: // IdentityHelper. RedirectToReturnUrl (Request.QueryString [ "ReturnUrl"], ответ); Response.Redirect ( "/ Account / Панель управления"); перерыв; случай SignInStatus.LockedOut: Response.Redirect ( "/ счета / Lockout"); перерыв; Случай SignInStatus.RequiresVerification: Response.Redirect (String.Format ( "? / Счет / TwoFactorAuthenticationSignIn ReturnUrl = {0} & RememberMe = {1}", Request.QueryString [ "ReturnUrl"], RememberMe.Checked), правда); перерыв; случай SignInStatus.Failure: по умолчанию: // FailureText. Text = «Недопустимые Войти попытка»; //ErrorMessage.Visible = TRUE; перерыв; }}} В случае переключатель переходит в правый случай, но вот вопрос. Когда он идет в деле SignInStatus.Success: она просто остается в цикле и продолжает представлять Вход экран, как если пользователь не прошла проверку подлинности. Теперь, я уверен, что я что-то на Override для общественности асинхронного переназначения задач PasswordSignInAsync отсутствую (строка имя пользователя, пароль строки, BOOL RememberMe, BOOL shouldLockout) функция, но я подумал, что если успех пришел ответ, что пользователь авторизован. Если я раскомментировать // результат переменная = signinManager.PasswordSignIn (Email.Text, Password.Text, RememberMe.Checked, shouldLockout: ложь); функцию он прекрасно работает, но я не могу получить значение IsEnabled проверить.
Ronkingjr
1

голосов
1

ответ
127

Просмотры

Изображение URL в Asp.Net 4.5 WebForms при использовании аутентификации Google

У меня есть сайт в ASP.Net 4.5 (не ASP.Net ядра), основанный на WebForms. Я использую с помощью кнопки Google на странице Login.aspx для входа пользователя, который поставляется со стандартным шаблоном в Visual Studio 2017 Community. Когда я смотрю на код в Visual Studio 2017, я могу увидеть код, который получает информацию аутентификации от Google (т.е. loginInfo переменную в коде ниже) в RegisterExternalLogin.aspx.cs, но когда я проверить объект User.Identity.Claims после аутентификации в коде-за другой страницы (например, в About.aspx.cs), то я считаю, что нет никаких претензий к URL изображения вошедшего в систему пользователя. Вопрос: Есть ли возможность получить URL изображения из Google, используя существующую аутентификацию ASP.Net Удостоверение / Owin в рамках .Net 4.5 (не ASP.Net ядра)? Если да, то как бы один идти о получении его? Код, выполняемый после аутентификации Google в RegisterExternalLogin.aspx.cs если {вар менеджер = новый UserManager () (IsPostBack!); вар loginInfo = Context.GetOwinContext () Authentication.GetExternalLoginInfo (). если (loginInfo == NULL) {Response.Redirect ( "~ / Account / Логин"); } Вар пользователя = manager.Find (loginInfo.Login); если (пользователь! = NULL) {IdentityHelper.SignIn (менеджер, пользователь, isPersistent: ложь); IdentityHelper.RedirectToReturnUrl (Request.QueryString [ "ReturnUrl"], ответ); } GetExternalLoginInfo (); если (loginInfo == NULL) {Response.Redirect ( "~ / Account / Логин"); } Вар пользователя = manager.Find (loginInfo.Login); если (пользователь! = NULL) {IdentityHelper.SignIn (менеджер, пользователь, isPersistent: ложь); IdentityHelper.RedirectToReturnUrl (Request.QueryString [ "ReturnUrl"], ответ); } GetExternalLoginInfo (); если (loginInfo == NULL) {Response.Redirect ( "~ / Account / Логин"); } Вар пользователя = manager.Find (loginInfo.Login); если (пользователь! = NULL) {IdentityHelper.SignIn (менеджер, пользователь, isPersistent: ложь); IdentityHelper.RedirectToReturnUrl (Request.QueryString [ "ReturnUrl"], ответ); } Отклик); } Отклик); }
Sunil
1

голосов
1

ответ
190

Просмотры

How to add column to aspnetuser?

У меня есть проект с 2-мя базы данных: 1, где у вас есть aspnetusers, роли логинов и так далее, и 2-й база для остальной части DATAS. Я хочу, чтобы этот проект будет отдельная база данных на арендатора, и хотел бы, чтобы иметь возможность изменить строку подключения на основе пользователей компании Id. Поэтому для того, чтобы сделать это, мне нужно добавить столбец в таблице aspnetusers. До сих пор у меня есть этот ApplicationUser общественного класса: IdentityUser {общественного DateTime? LastVisitDate {получить; задавать; } Общественного ИНТ? CompanyID {получить; задавать; } Общественных асинхронным Task GenerateUserIdentityAsync (менеджер UserManager) {// Обратите внимание на AuthenticationType должен соответствовать один определенным в CookieAuthenticationOptions.AuthenticationType вар UserIdentity = жду manager.CreateIdentityAsync (это, DefaultAuthenticationTypes.ApplicationCookie); // Добавление пользовательских пользователей утверждают, что здесь userIdentity.AddClaim (новый претензии ( "LastVisitDate", this.LastVisitDate.ToString ())); userIdentity.AddClaim (новое требование ( "CompanyID", this.CompanyId.ToString ())); вернуться UserIdentity; }} Общественного IdentityExtensions статического класса {общественность статическая строка GetLastVisitDate (это IIdentity идентичность) {вар претензия = ((ClaimsIdentity) идентичность) .FindFirst ( "LastVisitDate"); // Проверка на нуль, чтобы избежать проблем во время локального возвращения тестирования (п! = NULL)? claim.Value: string.Empty; } Общественности статической строки GetCompanyId (это IIdentity идентичности) {вар претензии = ((ClaimsIdentity) идентичность) .FindFirst ( "CompanyID"); возврата (претензия! = NULL)? claim.Value: string.Empty; } После этого я сделал надстройку миграции и все прошло. Проблема на Update-Database. Я получаю сообщение об ошибке «xxxx.aspusers.aspnetusers» не существует. Как мне сделать это обновление только "aspusers.aspnetusers? Он пытается целевой базу данных, которая устанавливается на Configurations.cs, которая является второй базой данных.
akyj
1

голосов
0

ответ
538

Просмотры

ASP.NET ядра 2,0 Идентичность с конфигурацией пользовательских таблиц

Я пытаюсь построить функции аутентификации с использованием удостоверений Сердечника 2.0 с собственными пользовательскими таблицами и EF Ядром 2.0. Я использую это для справки: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-custom-storage-providers?view=aspnetcore-2.1. Дело в том, что я не использую роли, ни претензий, так у меня есть один Table / DbSet, содержащий информацию о пользователе. Я реализовал необходимые интерфейсы и все выглядит нормально. Я также использую проверку подлинности JWT. Проблема в том, что я не знаю, как настроить службы в автозагрузку. Вот мой текущий код: общественный недействительный ConfigureServices (услуги IServiceCollection) {услуги .AddAuthentication (JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer (опции => {опция. TokenValidationParameters = новые TokenValidationParameters {ValidateIssuer = истинные, ValidateAudience = верно, ValidateLifetime = верно, ValidateIssuerSigningKey = верно, ValidIssuer = Конфигурация [ "JwtIssuer"], ValidAudience = Конфигурация [ "JwtAudience"], IssuerSigningKey = новый SymmetricSecurityKey (Encoding.UTF8.GetBytes ( Конфигурация [ "JwtKey"]))}; }); services.AddDbContext (опции => options.UseSqlServer (Configuration.GetConnectionString ( "DefaultConnection"))); services.AddIdentity () // AddEntityFrameworkStores () .AddDefaultTokenProviders (). services.AddTransient (); services.AddTransient (); services.AddTransient (); services.AddMvc (); } Где Пользователь моя Заказная реализация пользовательского класса. То же самое касается UserStore. Тем не менее, я не уверен, как настроить определенные службы Identity. Я должен позвонить services.AddIdentity, но это требует параметра типа TRole который я не реализующий и есть не любые изменения без обеспечения типа роли. Я либо должен реализовать манекен / использовать IdentityRole или я должен извлечь содержимое методы расширения и добавить их вручную, что не кажется хорошей идеей для меня. Кроме того, он добавляет Cookie Auth по умолчанию, так что он не будет сокращать это для меня. Вот тело метода расширения файлик: ASP.NET Идентичность реф-1 / ASP.NET Идентичность реф-2. Как мне зарегистрировать свои услуги? Кроме того, я не хватает что-то еще в конфигурации в целом, учитывая обстоятельства (JWT,
zhulien
1

голосов
2

ответ
108

Просмотры

Azure Media Services v3 не совместимо с Azure функции

Я пытаюсь воссоздать это прохождение https://docs.microsoft.com/en-us/azure/media-services/latest/stream-files-tutorial-with-api#download-the-sample как Azure функции, и кажется, есть некоторая несовместимость между Azure SDK и функции Microsoft.IdentityModel.Clients.ActiveDirectory. Если вы пытаетесь создать новый ArmClientCredentials как так ArmClientCredentials учетные данные = новые ArmClientCredentials (конфигурации); Вы получаете ошибку вроде так не удалось загрузить файл или сборку «Microsoft.IdentityModel.Clients.ActiveDirectory, Version = 3.19.4.11002 Конкретный пакет NuGet добавляется к проекту. Является ли это то, что требует дополнительного шага не показан здесь?
Isaac Levin
1

голосов
1

ответ
116

Просмотры

Авторизация в ASP.NET 2.0 Ядро с помощью провайдера OpenId

Я имею probles с прохождением претензий от внешней идентичности местного. Применение в основном QuickBooksASPNetCore2 Demo с добавлением OpenId поставщика удостоверений. Все, швы на работу, за исключением [Authorize (роли = «some_role»)] на тестовой странице Razer. Это код, который делает логику входа в систему, и _signInManager.GetExternalLoginInfoAsync (); возврат основной суммы всех требований от поставщика удостоверений (в том числе роли в рамках типа «http://schemas.microsoft.com/ws/2008/06/identity/claims/role»). свалка информации вар с претензиями общественных асинхронными Task OnGetCallbackAsync (строка ReturnUrl = NULL, строка remoteError = NULL) {если (remoteError! = NULL) {ErrorMessage = $ "Ошибка от внешнего поставщика: {remoteError}"; вернуться RedirectToPage ( "./ Войти"); } = вар информация ждут _signInManager.GetExternalLoginInfoAsync (); если (информация == NULL) {вернуться RedirectToPage ( "./ Войти"); } // Вход пользователя с этим внешним провайдером авторизации, если пользователь уже имеет логин. результат переменного = ждут _signInManager.ExternalLoginSignInAsync (info.LoginProvider, info.ProviderKey, isPersistent: истинный, bypassTwoFactor: истина); если (result.Succeeded) {_logger.LogInformation ( "{Имя} вошли в систему с {LoginProvider} провайдера.", info.Principal.Identity.Name, info.LoginProvider); ждут _signInManager.UpdateExternalAuthenticationTokensAsync (информация); вернуть LocalRedirect (Url.GetLocalUrl (ReturnUrl)); } Если (result.IsLockedOut) {вернуться RedirectToPage (». } Еще {// Если пользователь не имеет учетной записи, затем попросите пользователя, чтобы создать учетную запись. ReturnUrl = ReturnUrl; LoginProvider = info.LoginProvider; если (info.Principal.HasClaim (с => == ClaimTypes.Email Тип Ç)) {вход = новый InputModel {E-mail = info.Principal.FindFirstValue (ClaimTypes.Email)}; } Вернуть страницу (); }} Но когда этот метод выход, то User.Claims на Razor странице не имеет претензий роли. Он даже получает новый «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier» претензии (с разными ID). Я пропустил что-то здесь? } Еще {// Если пользователь не имеет учетной записи, затем попросите пользователя, чтобы создать учетную запись. ReturnUrl = ReturnUrl; LoginProvider = info.LoginProvider; если (info.Principal.HasClaim (с => == ClaimTypes.Email Тип Ç)) {вход = новый InputModel {E-mail = info.Principal.FindFirstValue (ClaimTypes.Email)}; } Вернуть страницу (); }} Но когда этот метод выход, то User.Claims на Razor странице не имеет претензий роли. Он даже получает новый «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier» претензии (с разными ID). Я пропустил что-то здесь? LoginProvider = info.LoginProvider; если (info.Principal.HasClaim (с => == ClaimTypes.Email Тип Ç)) {вход = новый InputModel {E-mail = info.Principal.FindFirstValue (ClaimTypes.Email)}; } Вернуть страницу (); }} Но когда этот метод выход, то User.Claims на Razor странице не имеет претензий роли. Он даже получает новый «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier» претензии (с разными ID). Я пропустил что-то здесь? LoginProvider = info.LoginProvider; если (info.Principal.HasClaim (с => == ClaimTypes.Email Тип Ç)) {вход = новый InputModel {E-mail = info.Principal.FindFirstValue (ClaimTypes.Email)}; } Вернуть страницу (); }} Но когда этот метод выход, то User.Claims на Razor странице не имеет претензий роли. Он даже получает новый «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier» претензии (с разными ID). Я пропустил что-то здесь? Эл. адрес) }; } Вернуть страницу (); }} Но когда этот метод выход, то User.Claims на Razor странице не имеет претензий роли. Он даже получает новый «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier» претензии (с разными ID). Я пропустил что-то здесь? Эл. адрес) }; } Вернуть страницу (); }} Но когда этот метод выход, то User.Claims на Razor странице не имеет претензий роли. Он даже получает новый «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier» претензии (с разными ID). Я пропустил что-то здесь?
Eugen
1

голосов
0

ответ
187

Просмотры

asp.net core Creating a TenantProvider with TenantId from current User

Моя организация нуждается в многопользовательское-решении по общей базе данных. Основываясь на примере созданного [Гуннар Peipman] [1] Я создал класс BaseEntity со свойством Guid TenantId {получить; набор;} Фактическая Tenantprovider была реализована как служба вызывающей временной пустышки TenantId. открытый интерфейс ITenantProvider {Guid GetTenantId (); } Общественного класса DummyTenantProvider: ITenantProvider {общественного Guid GetTenantId () {вернуться Guid.Parse ( "069b57ab-6ec7-479c-b6d4-a61ba3001c86"); }} Я хотел бы заменить пустышки с фактическим TenantId текущего пользователя, но я не могу заставить его работать. Я попытался следующие, но я не могу получить TenantId пользователей компьютера (создан как свойство в ApplicationUser). RealTenantProvider общественного класса: ITenantProvider {частный IHttpContextAccessor _contextAccessor только для чтения; общественного RealTenantProvider (IHttpContextAccessor contextAccessor) {_contextAccessor = contextAccessor; } Общественного Guid GetTenantId () {вар curUsr = _contextAccessor.HttpContext.User; если (! curUsr.Identity.Name = NULL) {вернуться Guid.Parse (curUsr.FindFirst ( "TenantId") значение.); } Вернуть Guid.Parse ( "00000000-0000-0000-000-000000000000"); }} Однако, curUsr.Identity.Name всегда пустой, хотя пользователь вошел в систему. Есть еще один способ получения пользовательских свойств TenantId из applicationUser вернулся? Похоже, «Я близко, но не сигара еще :). Любое руководство ценится. общественного RealTenantProvider (IHttpContextAccessor contextAccessor) {_contextAccessor = contextAccessor; } Общественного Guid GetTenantId () {вар curUsr = _contextAccessor.HttpContext.User; если (! curUsr.Identity.Name = NULL) {вернуться Guid.Parse (curUsr.FindFirst ( "TenantId") значение.); } Вернуть Guid.Parse ( "00000000-0000-0000-000-000000000000"); }} Однако, curUsr.Identity.Name всегда пустой, хотя пользователь вошел в систему. Есть еще один способ получения пользовательских свойств TenantId из applicationUser вернулся? Похоже, «Я близко, но не сигара еще :). Любое руководство ценится. общественного RealTenantProvider (IHttpContextAccessor contextAccessor) {_contextAccessor = contextAccessor; } Общественного Guid GetTenantId () {вар curUsr = _contextAccessor.HttpContext.User; если (! curUsr.Identity.Name = NULL) {вернуться Guid.Parse (curUsr.FindFirst ( "TenantId") значение.); } Вернуть Guid.Parse ( "00000000-0000-0000-000-000000000000"); }} Однако, curUsr.Identity.Name всегда пустой, хотя пользователь вошел в систему. Есть еще один способ получения пользовательских свойств TenantId из applicationUser вернулся? Похоже, «Я близко, но не сигара еще :). Любое руководство ценится. } Общественного Guid GetTenantId () {вар curUsr = _contextAccessor.HttpContext.User; если (! curUsr.Identity.Name = NULL) {вернуться Guid.Parse (curUsr.FindFirst ( "TenantId") значение.); } Вернуть Guid.Parse ( "00000000-0000-0000-000-000000000000"); }} Однако, curUsr.Identity.Name всегда пустой, хотя пользователь вошел в систему. Есть еще один способ получения пользовательских свойств TenantId из applicationUser вернулся? Похоже, «Я близко, но не сигара еще :). Любое руководство ценится. } Общественного Guid GetTenantId () {вар curUsr = _contextAccessor.HttpContext.User; если (! curUsr.Identity.Name = NULL) {вернуться Guid.Parse (curUsr.FindFirst ( "TenantId") значение.); } Вернуть Guid.Parse ( "00000000-0000-0000-000-000000000000"); }} Однако, curUsr.Identity.Name всегда пустой, хотя пользователь вошел в систему. Есть еще один способ получения пользовательских свойств TenantId из applicationUser вернулся? Похоже, «Я близко, но не сигара еще :). Любое руководство ценится. Значение); } Вернуть Guid.Parse ( "00000000-0000-0000-000-000000000000"); }} Однако, curUsr.Identity.Name всегда пустой, хотя пользователь вошел в систему. Есть еще один способ получения пользовательских свойств TenantId из applicationUser вернулся? Похоже, «Я близко, но не сигара еще :). Любое руководство ценится. Значение); } Вернуть Guid.Parse ( "00000000-0000-0000-000-000000000000"); }} Однако, curUsr.Identity.Name всегда пустой, хотя пользователь вошел в систему. Есть еще один способ получения пользовательских свойств TenantId из applicationUser вернулся? Похоже, «Я близко, но не сигара еще :). Любое руководство ценится.
Charles de M.
1

голосов
0

ответ
167

Просмотры

Неверное имя столбца «UserId» и «IdentityUser_Id» при попытке войти в систему / Регистрация

Я пытался построить свой собственный интернет-магазин в MVC на основе OpenOrderFramework, расположенной здесь - https://github.com/lbacaj/OpenOrderFramework мне удалось получить все работает отлично друг от друга, когда речь идет о попытке войти в систему, зарегистрируйтесь или полная проверка - в основном ничего общего с Identity. Ошибка я получаю либо: Недопустимое имя столбца «UserId». или недопустимое имя столбца «IdentityUser_UserId». В рамках этого процесса, я создал свой собственный обычай таблицы записи ASPNET идентичности (AspNetRoles, AspNetUserClaims, AspNetUserLogins, AspNetUserRoles, AspNetUsers) Когда я говорю на заказ, все они следуют стандартизованный формат по умолчанию, кроме таблицы AspNetUsers, которая имеет некоторые дополнительные новые поля там. Они все-таки поступает в проект, как так: переопределение защищено недействительный OnModelCreating (DbModelBuilder MODELBUILDER) {base.OnModelCreating (MODELBUILDER); // Это должно идти перед другими правилами! . ModelBuilder.Entity () ToTable ( "TSSC_AspNetUsers", "DBO"); . ModelBuilder.Entity () ToTable ( "TSSC_AspNetUsers", "DBO"); . ModelBuilder.Entity () ToTable ( "TSSC_AspNetUserRoles", "DBO"); . ModelBuilder.Entity () ToTable ( "TSSC_AspNetRoles", "DBO"); . ModelBuilder.Entity () ToTable ( "TSSC_AspNetUserLogins", "DBO"); . ModelBuilder.Entity () ToTable ( "TSSC_AspNetUserClaims", "DBO"); } В зависимости от того, что я пытаюсь, инвалид ошибка имени столбца может появиться до трех раз для одной и той же области, которые я нахожу странным. [Дискриминатор] = N'ApplicationUser '} System.Linq.IQueryable {System.Data.Entity.DbSet} Как вы можете видеть, он ищет колонку под названием „IdentityUser_UserId“, которая не существует. Поле на самом деле «Id». Любая помощь или советы будут оценены. Это сводит меня с ума.
blurtbasin
1

голосов
0

ответ
131

Просмотры

IdentityServer4 и клиент .NET Ядро Идентичность не выход из системы на изменение штемпеля безопасности

Я пытаюсь реализовать только один знак в расчете пользовательских функций. В основном, когда пользователь подписывает в из другого браузера или из другого места, старые сессии для пользователя (в том числе клиентов) аннулируется. В моем коде, когда метка безопасности автоматически обновляется через _userManager.UpdateSecurityStampAsync (loggedinUser); вызов, сервер регистрирует пользователя из но клиенты, подключенные к нему не выход из системы. Когда я выйти из системы вручную с сервера, клиенты выхода из системы без проблем. (Я поставил FrontChannelLogoutUri от конфигурации IdentityServer). Есть ли решение этой проблемы (как, какие методы я переопределить для реализации пользовательского выхода из системы) или альтернативы?
shellnut
1

голосов
0

ответ
156

Просмотры

ASP.NET Core: Error when using a custom DbContext while also using Identity

Я создал DbContext на основе существующей базы данных Azure SQL с помощью Entity Framework. Я добавил эту базу данных для служб моего приложения, как показано ниже: общественные недействительные ConfigureServices (услуги IServiceCollection) {// Идентичность базы данных Контекст services.AddDbContext (опции => options.UseSqlServer (Configuration.GetConnectionString ( "DataDb"), optionsBuilders => optionsBuilders.MigrationsAssembly ("Веб-портал")) ); services.AddIdentity () .AddEntityFrameworkStores () .AddDefaultTokenProviders (); // Контекст Пользовательские базы данных services.AddDbContext (опции => options.UseSqlServer (Configuration.GetConnectionString ( "CustomDb"))); services.AddMvc (); } Когда я пытаюсь запустить это я получаю следующее сообщение об ошибке: InvalidOperationException: В DbContextOptions, передаваемый конструктору IdentityDbContext должен быть DbContextOptions. При регистрации несколько типов DbContext убедитесь, что конструктор для каждого типа контекста имеет параметр DbContextOptions, а не необщий параметр DbContextOptions. Конструктор для моего пользовательского контекста действительно есть параметр: общественный CustomDbContext (опции DbContextOptions): базовые (варианты) {} Почему я получаю ошибку? При регистрации несколько типов DbContext убедитесь, что конструктор для каждого типа контекста имеет параметр DbContextOptions, а не необщий параметр DbContextOptions. Конструктор для моего пользовательского контекста действительно есть параметр: общественный CustomDbContext (опции DbContextOptions): базовые (варианты) {} Почему я получаю ошибку? При регистрации несколько типов DbContext убедитесь, что конструктор для каждого типа контекста имеет параметр DbContextOptions, а не необщий параметр DbContextOptions. Конструктор для моего пользовательского контекста действительно есть параметр: общественный CustomDbContext (опции DbContextOptions): базовые (варианты) {} Почему я получаю ошибку?
hsbsid
1

голосов
1

ответ
48

Просмотры

Sign out of all subdomains using IdentityServer 4

У меня есть приложение, которое имеет несколько субдоменов - например, portal.mysite.com, admin.mysite.com и т.д. - и все они используют auth.mysite.com, который работает IdentityServer 4. Основной сайт использует React с РСИН-клиент-JS, и все это устанавливается для неявного потока. Когда сайт переходов между поддоменов, я называю oidcUserManager.signinSilent () перед загрузкой остальной части приложения, чтобы убедиться, что пользователь регистрируется. Это все прекрасно работает. Выход из системы, однако, не работает. Если я выйти из www.mysite.com затем вернуться к www.mysite.com, я вышел из системы. Но если бы я выйти из www.mysite.com затем откройте portal.mysite.com, молчаливая аутентификация прошла успешно. Я звоню выход из системы с: Const id_token_hint = user.id_token oidcUserManager.signoutRedirect ({id_token_hint}) Это правильно перенаправляет меня на страницу выхода из системы, где I» ве добавили тонну избыточных вызовов: Vm = вар ждут _account.BuildLoggedOutViewModelAsync (model.LogoutId); ждут _signInManager.SignOutAsync (); ждут HttpContext.SignOutAsync (IdentityConstants.ExternalScheme); ждут HttpContext.SignOutAsync (IdentityServerConstants.DefaultCookieAuthenticationScheme); ждут HttpContext.SignOutAsync (); Я понимаю, что, если куки, которая использует IdentityServer уничтожается, пользователь должен выйти из системы через все. Поскольку безопасность браузера правильно работает, я не могу очистить РСИН ключей от хранилища браузера во всех возможных субдоменах они посетили. Я играл со схемами аутентификации печенья, никто не сделал разницу. Я вручную удалил все куки, тот же вопрос. Я также использовал сервис взаимодействия вручную отменить все маркеры для сессии, и я все еще получаю авторизовались просто отлично. Признаюсь, я не совсем понимаю, задний канал / передний материала канала, но вопрос, который я пытаюсь решить здесь все в пределах одной вкладки - приложение не работает в браузере во время выхода из системы. Я предполагаю, что это может быть, но это позже! Я думаю? Любые предложения о том, как я мог бы зарегистрировать пользователь из всех поддоменов?
Nathan Loding
1

голосов
2

ответ
770

Просмотры

How to retrieve identity claim values in _Layout.cshtml

Я прибегая к помощи этой вещи для выхода долгого времени, но все еще не может получить правильный ответ. Я использую требование идентификации для аутентификации пользователя и мне нужно некоторые значения претензии на моей странице _Layout.cshtml. Однако я могу получить пользовательские значения исковых идентичностей, но не вмонтированные в них. Здесь я установил свою идентичность: Var = новый идентификационный ClaimsIdentity (новый [] {// добавление следующих 2 требование только для поддержки стандартного поставщика antiforgery новый Claim (ClaimTypes.NameIdentifier, user.LoginId), новый Claim ( "HTTP: // схемы. microsoft.com/accesscontrolservice/2010/07/claims/identityprovider», "ASP.NET Идентичность", "http://www.w3.org/2001/XMLSchema#string"), новый претензии (ClaimTypes.Name пользователь. UserName), новые претензии (ClaimTypes.Sid, user.UserId. ToString ()), новое требование ( "OperationType", user.OperationType.ToString ()), новое требование ( "ImageLink", user.ImageLink.ToString ())}, DefaultAuthenticationTypes.ApplicationCookie); вар claimsPrincipal = новый ClaimsPrincipal (идент); // Установить текущую основную Thread.CurrentPrincipal = claimsPrincipal; и мой макет страницы код: @using System.Security.Claims; ........... @ {строка userDesignation = ((ClaimsIdentity) User.Identity) .FindFirst ( "OperationType") Значение. ; Строка userImage = ((ClaimsIdentity) User.Identity) .FindFirst ( "ImageLink") Значение. ; } Я могу получить мои пользовательские требования (ImageLink, OperationType) значения, но не смогли в состоянии восстановить (имя, Sid) с той же схемой. Некоторые из ответов, которые я обнаружил, что говорит о методах расширения. Это единственный способ для получения значений или иметь какой-либо другой путь? заранее спасибо
Parvez
1

голосов
1

ответ
163

Просмотры

Как передать SQL запрос к Entity Framework

Я создаю отчет и нужно передать запрос от SQL Server к Entity Framework. Запрос: SELECT, contas_receber.id, pessoa.nome, contas_receber.vencimento, contas_receber.valor_pago, contas_receber.observacao, pessoa.estado ОТ contas_receber INNER JOIN Пессоа ПО contas_receber.pessoa_id = pessoa.id INNER JOIN classificacoes ПО classificacoes.id = Пессоа .classificacao_id LEFT OUTER JOIN Servicos НА servicos.id = contas_receber.servico_id левое внешнее соединение produto ПО produto.id = contas_receber.venda_id ГДЕ (contas_receber.quitado = 0) и (CAST (contas_receber.vencimento как дата)> = @ datavenc1) И (CAST (contas_receber.vencimento как дата)
Renato
1

голосов
0

ответ
250

Просмотры

Getting user data from Active Directory with Windows Authentication .NET Core

Я работаю над проектом, где мне нужно получить доступ к Active Directory и получить пользовательские данные оттуда, как телефонная книга. С проверки подлинности Windows [WA] устанавливается при создании проекта, он каким-то образом автоматически получает свой счет, что в настоящее время вошли в систему на компьютере в следующем формате: [DOMAIN] [имя пользователя] Я не знаю, является ли это уже обменивается данными с повышение АД или только текущий Логин для Windows. Моя цель состоит в том, чтобы иметь возможность войти в AD из одновременно внутренней и внешней связи, а также получить данные, основанные на ролях AD дает. Программа по умолчанию получает информацию, как это с Razor: @ Пользователь.Идентичность.Имя Так что я в состоянии извлечь имя пользователя, как это: AppUser температура = новый AppUser {Имя пользователя = ClaimsPrincipal.Current.Identity.Name}; Но это, очевидно, не достаточно, чтобы получить путем, и это не будет аутентифицировать меня к AD. Полномочия являются одинаковыми на компьютере и на AD, так что в теории это должно быть возможно. Моя цель состоит в том, чтобы проверить подлинность с проверкой подлинности Windows на внутренний сайт без необходимости снова войти в систему, но при обращении с внешнего сайта он по-прежнему требует учетные данные. Это расширение текущего проекта, так что большая часть внутреннего интерфейса написано, так что было бы здорово, если бы это было возможно с помощью текущих интерфейсов новых услуг внизу. Благодарю. но при обращении с внешним сайта он по-прежнему требует учетных данных. Это расширение текущего проекта, так что большая часть внутреннего интерфейса написано, так что было бы здорово, если бы это было возможно с помощью текущих интерфейсов новых услуг внизу. Благодарю. но при обращении с внешним сайта он по-прежнему требует учетных данных. Это расширение текущего проекта, так что большая часть внутреннего интерфейса написано, так что было бы здорово, если бы это было возможно с помощью текущих интерфейсов новых услуг внизу. Благодарю.
PeBot
1

голосов
2

ответ
66

Просмотры

Почему Allowanonymous берет меня на счет / страницу Входа

enter image description hereI am trying to redirect anonymous user to Account/newlogin page but it is keep redirecting to Account/Login page . [AllowAnonymous] public ActionResult newlogin(string returnUrl) { ViewBag.ReturnUrl = returnUrl; return View(); } [enter image description here][1]I am trying to redirect anonymous user to Account/newlogin page but it is keep redirecting to Account/Login page . [AllowAnonymous] public ActionResult newlogin(string returnUrl) { ViewBag.ReturnUrl = returnUrl; return View(); } This is my Web.config file.Please let me know if I should make any changes in there.This is my Web.config file.Please let me know if I should make any changes in there.
Nirav
1

голосов
0

ответ
746

Просмотры

ASP.NET ядра 2,1 CookieAuthentication тайм-аут сеанса

раз Session из перед тем CookieAuthentication печенья делает, пытаясь имитировать «Remember Me» функциональность при проверке подлинности на удаленном API JWT основе. Грубый обзор App # 1 - .Net Ядро 2.0.8 - с помощью идентификации и JWT лексемы (Угловое приложения с .net ядра и эф ядра API) App # 2 - .Net Ядро 2.1.1 - с помощью CookieAuthentication схемы для входа клиентов, называя приложение # 1 API для аутентификации / проверки учетных данных. Маркер извлекается и сохраняется для будущих вызовов API (чтобы получить дополнительную информацию о пользователе, чтобы обновить информацию о пользователе и т.д.) код в App # 1 работает отлично и срок действия маркера / обновления маркер работает, как ожидалось (тестировалось самостоятельно с помощью почтальона) - Я добавил параметр для отправки с вызовом аутентификации, чтобы установить срок действия маркера, так что я могу установить его на 5mins или 30 дней, например. В App # 2, я имею в запуске: услуги. AddDistributedRedisCache (опции => {options.Configuration = "хост: порт";}); вар Redis = ConnectionMultiplexer.Connect ( "хост: порт"); Услуги .AddDataProtection () .PersistKeysToRedis (Redis, $ "{appSettings.RedisInstanceName} -DataProtection-ключи") .SetDefaultKeyLifetime (TimeSpan.FromDays (30)) services.AddSession (КЛЮЧ => {opts.Cookie.HttpOnly = TRUE; выбирает .Cookie.Name = ".session"; opts.IdleTimeout = ехр;}); services.AddAuthentication (CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie (КЛЮЧ => {opts.Cookie.HttpOnly = TRUE; opts.Cookie.Name = ".session.auth";}); В приведенном выше описании, ехр устанавливается на 240 минут, т.е. 4 часа - в качестве теста. Когда Войти происходит, я: удаленный вызов API с именем пользователя / пароль для аутентификации, в случае успеха получить маркер доступа маркер доступа Хранить в локальной сессии вместе с основным идентификатором пользователя (имя, фамилия, адрес электронной почты, идентификатор пользователя) тождественности вызов для входа в аккаунт, чтобы установить проверку подлинности статуса, так что я могу использовать [Авторизовать] Нет контроллеров / действия. вар authProperties = новые AuthenticationProperties {AllowRefresh = верно, ExpiresUtc = ехр, IsPersistent = RememberMe, IssuedUtc = DateTimeOffset.UtcNow, RedirectUri = нуль}; ждут _httpContextAccessor.HttpContext.SignInAsync (CookieAuthenticationDefaults.AuthenticationScheme, новый ClaimsPrincipal (claimsIdentity), authProperties); (Ехр такой же, как указано выше, 240 минут), так что требуемая функциональность здесь, если «RememberMe» истинно, печенье и сессия живы до 4-х часов простоя. В реальном мире, это, вероятно, будет длительный период, то есть 30 дней. Если «RememberMe» является ложным, оно должно продолжаться в течение сессии только с IdleTimeout по умолчанию 20 минут на или любой другой. Вопрос заключается в том, как я выравнивать кук аутентификации с нормальным приложением печеньем, который контролирует материал, сохраненный на сессию? т.е. _httpContextAccessor.HttpContext.Session.Get ( "ключ"); То, что происходит сейчас, это сеанс приложения истекает, но аутентификация не происходит, но с маркером доступа удаленного API, сохраненным в сессии, он потерял, так что я не могу обновить эту информацию и не могу делать какие-либо дополнительные вызовы API. ИЛИ ЖЕ, Как сохранить информацию против авторизованной сессии? Это плохой способ / что будет лучше для этого случая использования против API?
Werner B
1

голосов
0

ответ
18

Просмотры

Asp.Net Идентичность проверить tokenlifespan время для двухфакторной

Я не пытаюсь для блокирования множественного кода отправки для смс, пока мои tokenlifespan ends.Is там какой-либо способ для получения tokenlifespan оставшегося времени. manager.UserTokenProvider = новый DataProtectorTokenProvider (dataProtectionProvider.Create ( "ASP.NET идентичность")) {TokenLifespan = TimeSpan.FromMinutes (SmsSettings.Settings.LifeSpan.ParseInt (3))};
Alican Kablan
1

голосов
0

ответ
58

Просмотры

Можно ли использовать Microsoft.Aspnet.Identity.Core с .net 4.0

При попытке установить Microsoft.Aspnet.Identity.Core версии 2.2 с моим проектом .net 4.0 я получаю следующее сообщение об ошибке: Не удалось установить пакет "Microsoft.AspNet.Identity.Core 2.2.2. Вы пытаетесь установить этот пакет в проект, который «.NETFramework, Version = v4.0' цели, но пакет не содержит никаких ссылок сборки или файлы содержимого, которые совместимы с этой структурой. Для получения более подробной информации, обратитесь к автору пакета. Я понимаю, что это требует .net 4.5+. Есть старая версия Microsoft.Aspnet.Identity.Core, которая работает с .NET 4.0? В более общем плане, где лучшее место, чтобы проверить, какую версию .NET поддерживает пакет конкретных NuGet?
theycallmemorty
1

голосов
1

ответ
66

Просмотры

не может найти таблицу для присоединиться к сердцевине идентичности ядра осины

У меня есть 3 таблицы в identitycore 2 в aspcore для пользователей, ролей и UserRole. так что мне нужно, чтобы заполнить UserRoleViewModel со всей областью 3 таблицы. я использовал этот код для джойна рабочих таблиц: ApplicationUserManager общественного класса: UserManager, IApplicationUserManager {частный IUnitOfWork _uow только для чтения; _passwordValidators; частные _services IServiceProvider только для чтения; частное _users DbSet только для чтения; частное _roles DbSet только для чтения; частное чтение DbSet _userRoles; частное чтение IApplicationUserStore _userStore; IUnitOfWork UOW, IUsedPasswordsService usedPasswordsService): основание ((UserStore) Шторер) {_users = uow.Set (); _roles = uow.Set (); _userRoles = uow.Set (); } Общественного Список FindUserRole () {вар UserInfo = от пользователей в пользователях присоединиться к UserRole в _userRoles на пользователях}, но когда мне нужно для exmaple user.id не показать мне свойство пользователя Tabel. эта проблема имеет для всех таблиц. Как я могу присоединиться к этим рабочим таблицам?
Mr-Programer
1

голосов
0

ответ
41

Просмотры

CookieDomain не быть установлен в CookieAuthenticationOptions ASP.NET

Я использую Asp.Net Core, Идентичность в моем приложении ASP.Net для управления входом сессий. Для достижения этой цели я использую функцию app.UseCookieAuthentication создавать и хранить .AspNet.CookieAuthentication печенья так, что браузер запоминает логин сеанс для пользователя. Это предотвращает пользователя от необходимости повторно вводить свои учетные данные каждый раз, когда они открывают веб-сайт. Войти сессия работает в течение 8 часов. Домен моего веб-приложение, которое обрабатывает этот запрос входа в систему и создает куки расположен по адресу: app1.domain1.co.uk Однако я хочу домен куки, чтобы быть просто установлен: domain1.co.uk Это потому, что я планирую иметь другое приложение, работающее на отдельном поддомене на месте: app2.domain1.co.uk Это приложение также использует Asp.Net Core, Идентичность и получает доступ к той же БД Идентичность как «App1». Когда логины на app1.domain1.co.uk успешно, а затем открывают app2.domain1.co.uk Я хочу, чтобы приложение, чтобы забрать сеанс сохраненный из App1 и использовать его для автоматического входа в app2, чтобы предотвратить пользователь, имеющим снова повторно свои данные для входа. Код у меня есть для функции app.UseCookieAuthentication выглядит следующим образом: app.UseCookieAuthentication (новые CookieAuthenticationOptions {AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = новый PathString ( "/ Account / Логин"), Provider = новый CookieAuthenticationProvider {OnValidateIdentity = SecurityStampValidator.OnValidateIdentity (validateInterval: TimeSpan.FromMinutes (30), regenerateIdentity: (менеджер пользователей) => пользователь. GenerateUserIdentityAsync (менеджер))}, ExpireTimeSpan = TimeSpan.FromHours (8), SlidingExpiration = верно, CookieDomain = ".domain1.co.uk"}); Как вы можете видеть, что я указать, что домен куки должны быть «.domain1.co.uk». Однако, когда я проверить мое приложение и просмотреть куки в любом браузере, домен все еще набор для app1.domain1.co.uk. Любая помощь или указания, почему печенье отказывается установить домен на то, что я указал очень ценятся. Спасибо за вашу помощь. Однако, когда я проверить мое приложение и просмотреть куки в любом браузере, домен все еще набор для app1.domain1.co.uk. Любая помощь или указания, почему печенье отказывается установить домен на то, что я указал очень ценятся. Спасибо за вашу помощь. Однако, когда я проверить мое приложение и просмотреть куки в любом браузере, домен все еще набор для app1.domain1.co.uk. Любая помощь или указания, почему печенье отказывается установить домен на то, что я указал очень ценятся. Спасибо за вашу помощь.
LukeO
1

голосов
1

ответ
170

Просмотры

Не удалось разрешить услугу типа «Microsoft.AspNetCore.Identity.RoleManager`

Я пишу код для добавления ролей пользователей в моем основном проекте ASP.NET Вот мой контроллер Роли. общественный класс RolesController: контроллер {RoleManager _roleManager; UserManager _userManager; общественного RolesController (RoleManager roleManager, UserManager userManager) {_roleManager = roleManager; _userManager = userManager; } Общественного IActionResult Index () => Вид (_roleManager.Roles.ToList ()); общественный IActionResult Create () => View (); [HttpPost] общественная асинхронной Задача Создать (название строки) {если {результат IdentityResult = ждет _roleManager.CreateAsync (новый IdentityRole (имя)) (string.IsNullOrEmpty (имя)!); если (result.Succeeded) {вернуться RedirectToAction ( "Index"); } Еще {Еогеасп (ошибка в result.Errors вар) {ModelState.AddModelError (string.Empty, error.Description); }}} Вернуться View (имя); } [HttpPost] общественных асинхронной Задача Удалить (строка ID) {IdentityRole роли = ждут _roleManager.FindByIdAsync (ID); если (! Роль = NULL) {IdentityResult результат = ждут _roleManager.DeleteAsync (роль); } Вернуть RedirectToAction ( "Index"); } Общественного IActionResult UserList () => Вид (_userManager.Users.ToList ()); общественного асинхронной Задача Edit (строка идентификатор пользователя) {// получаем пользователя пользователя AspNetUsers = ждут _userManager.FindByIdAsync (USERID); если (пользователь! = NULL) {// получем список ролей пользователя вар UserRoles = ждут _userManager.GetRolesAsync (пользователя); вар allRoles = _roleManager.Roles.ToList (); ChangeRoleViewModel модель = новый ChangeRoleViewModel {UserId = user.Id, USEREMAIL = user.Email, UserRoles = UserRoles, AllRoles = allRoles}; вернуться View (модель); } Вернуть NotFound (); } [HttpPost] общественности асинхронной Task Edit (строка USERID, Список ролей) {пользователь AspNetUsers = ждут _userManager.FindByIdAsync (USERID); если (! пользователь = NULL) {вар UserRoles = ждут _userManager.GetRolesAsync (пользователя); вар allRoles = _roleManager.Roles.ToList (); вар addedRoles = роли. За исключением (UserRoles); вар removedRoles = userRoles.Except (роли); ждут _userManager.AddToRolesAsync (пользователь, addedRoles); ждут _userManager.RemoveFromRolesAsync (пользователь, removedRoles); вернуться RedirectToAction ( "UserList"); } Вернуть NotFound (); }} Но когда я запускаю приложение и собирается в контроллер ролей. Я получаю эту ошибку произошло необработанное исключение при обработке запроса. InvalidOperationException: Не удается разрешить услугу типа "Microsoft.AspNetCore.Identity.RoleManager`1 [Microsoft.AspNetCore.Identity.IdentityRole] при попытке активировать«VchasnoCrm.Controllers.RolesController». Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService (IServiceProvider зр, тип тип, тип requiredBy,
Eugene Sukh
1

голосов
2

ответ
289

Просмотры

Cookie не скользит на сервере но при запуске локально

У меня есть идентификатор сервера 4 приложения с идентичностью ASP .NET. У меня есть печенье, установленное для слайда. services.ConfigureApplicationCookie (КЛЮЧ => {opts.Cookie.Expiration = TimeSpan.FromDays (30); opts.SessionStore = новый RedisCacheTicketStore (новые RedisCacheOptions () {Конфигурация = конфигурация [ "Redis: HostPort"]}, регистратор, конфигурации); opts.Cookie.SameSite = SameSiteMode.None; opts.SlidingExpiration = TRUE; opts.ExpireTimeSpan = TimeSpan.FromDays (30);}); Не скользящая Localhost: Когда пользователь входит в .AspNetCore.Idenitty. Применение получает время истечения срока действия. Когда страница обновляются выдый обновляются я могу видеть изменения временной метки. Производство:. Однако, если я проверить это, когда его на сервере пользователь входит в систему и .AspNetCore.Idenitty.Application получает время истечения срока действия с отметкой времени, когда вошли в систему, однако при обновлении страницы штамп времени не делает изменения , Она остается такой же, как это было, когда пользователь вошел в систему пользователя выгонят через 30 минут Производство:. Второй вопрос заключается в том, что, как вы можете видеть время истечения срока устанавливается на месяц вперед все же, когда на сервере в течение 30 минут этого пользователя будет изгнан и вынужден снова войти в систему. Я не могу держать пользователь, вошедший в течение более 30 минут, даже если они активны. штамп безопасности я проверил штемпель пользователей безопасности не изменился, и маркер содержит «AspNet.Identity. LogError (LoggingEvents.ApplicationSignInManagerSecurityTokenValidation, "Пользователь не найден [главная {главная}]", главный); вар principalSecurityStamp = principal.FindFirstValue (Options.ClaimsIdentity.SecurityStampClaimType); // печать безопасности от претензий вара userManagerSecurityStamp = user.SecurityStamp; // Штамп безопасности из usermanager вар getSecurityStampAsyncResults = ждут UserManager.GetSecurityStampAsync (пользователь); марка // Безопасность от GetSecurityStampAsync Logger.LogError (LoggingEvents.ApplicationSignInManagerSecurityTokenValidation, «Ошибка штамп безопасности проверки: [principalSecurityStamp {principalSecurityStamp}]! = [getSecurityStampAsyncResults 83270b3f-a042-4a8f-B090-f5e1a084074e] также ([userManagerSecurityStamp 83270b3f-a042-4a8f-B090-f5e1a084074e]) Так principal.FindFirstValue (Options.ClaimsIdentity.SecurityStampClaimType), как представляется, быть пустым. Почему я не знаю. Я также не знаю, как это исправить, поскольку есть ряд сторонних приложений, требующих этот сервер, удостоверяющий личность. Update2: теперь я могу проверить, что GenerateClaimsAsync ли установить SecurityStampClaim. Однако CookieValidatePrincipalContext в ValidateAsync не содержит требования в вопросе, который как ни странно комментарий о методе говорит. /// Контекст, содержащий Я также не знаю, как это исправить, поскольку есть ряд сторонних приложений, требующих этот сервер, удостоверяющий личность. Update2: теперь я могу проверить, что GenerateClaimsAsync ли установить SecurityStampClaim. Однако CookieValidatePrincipalContext в ValidateAsync не содержит требования в вопросе, который как ни странно комментарий о методе говорит. /// Контекст, содержащий Я также не знаю, как это исправить, поскольку есть ряд сторонних приложений, требующих этот сервер, удостоверяющий личность. Update2: теперь я могу проверить, что GenerateClaimsAsync ли установить SecurityStampClaim. Однако CookieValidatePrincipalContext в ValidateAsync не содержит требования в вопросе, который как ни странно комментарий о методе говорит. /// Контекст, содержащий
DaImTo
1

голосов
0

ответ
58

Просмотры

Updating Roles stopped working after publishing/deploying

Я имел веб-приложение, где я использовал ASP.NET Идентичность, он работал отлично на моей машине, но когда я напечатал его на хостинг-сервере система Роль частично перестала работать. Был часть кода, где я использовал для управления Обработать роли, вот код ниже строки [] = {роли «Компания», «Пользователь»}; // Присвоение роли для пользователя Здесь вар Rolestore = новый Rolestore (контекст); вар roleManager = новый RoleManager (Rolestore); вар userStore = новый UserStore (контекст); вар userManager = новый UserManager (userStore); Roles.RemoveUserFromRoles (имя пользователя, роли); this.UserManager.RemoveFromRoles (company.Id, роли); если (company.Approved) {this.UserManager.AddToRole (company.Id, "Компания"); } Еще {this.UserManager.AddToRole (company.Id, "Пользователь"); } Примечание: company.Id является идентификатором пользователя, так что это хорошо. Опять же, это работает отлично на моей машине, когда я опубликовал его, он перестал работать и не показывает никаких ошибок, и это делает остальную часть кода ниже этой части. Я предполагаю, что это может быть что-то в строке подключения в файле web.config, но не уверен, что это. Я надеюсь, что смогу найти решение, как я искал какое-то время не мог найти ничего. UPDATE 1: Я обнаружил, что он работает только на локальном хосте, а не на сервере, когда я пытался подключиться к хостинг базы данных сервера с VS от моей машины и отлажен, я обнаружил, что он работает нормально, но при тестировании с помощью сайта ссылки его не работает .. UPDATE 2: Я наконец-то знал, где находится ошибка с,
Ahmed Khaled
1

голосов
2

ответ
102

Просмотры

Сервер идентификации 4 заставил пользователей выхода из системы

У меня есть приложение, установка IdentityServer4 с основной .net версии 1.1. У меня есть требование, где пользователь Администратор может отключить пользователей в системе. После отключения, эти пользователи не должны быть в состоянии использовать эту систему. Они должны быть вынуждены SignOut из всех браузеров и устройств. Примечание: Приложение настроено на использование OAuth и OpenId. Что такое лучший способ справиться с таким сценарием?
Aruna
1

голосов
0

ответ
90

Просмотры

Saving an AspNetUser from an Azure AD Bearer token with ASP.NET Identity

Я пишу Угловое SPA передний конец с DotNet ядра 2,2 API только бэкенд с использованием Azure Active Directory для проверки подлинности (например, с помощью Azure AD OAuth 2 https://login.microsoftonline.com//oauth2/authorize?client_id=&redirect_uri=&response_type = id_token & сфера =% 20profile OpenID). SPA проверяет подлинность с Azure AD и получает id_token JWT, который также используется при вызове бэкенд DotNet Core, с помощью заголовка HTTP авторизации однонаправленного канала. Это подтверждено бэкэндом с [Authorize] атрибут на контроллерах. Я могу читать пользователь JWT утверждает, просто отлично на конечных точках контроллера; Однако, я хотел бы быть в состоянии хранить основные сведения о идентифицированном пользователе в таблицу AspNetUsers предоставленной ASP.NET идентичность для соотнесения записей в аутентифицированном пользователь на уровне данных (возможно, по UserManager?). Где бы лучшее место, чтобы добавить проверенную информацию о пользователе Azure AD JWT к таблицам ASP.NET идентичности? Startup.cs общественного недействительный ConfigureServices (услуги IServiceCollection) {services.AddDbContext (опции => options.UseSqlServer (Configuration.GetConnectionString ( "DefaultConnection"))); services.AddIdentityCore (конфигурации => {config.User.RequireUniqueEmail = TRUE;}) (.AddRoles) .AddEntityFrameworkStores (); services.AddAuthentication (AzureADDefaults.JwtBearerAuthenticationScheme) .AddAzureADBearer (опции => Configuration.Bind ( "AzureAd", опционы)); ...} SampleDataController.cs [авторизовать (роли = "Сотрудник")] [HttpGet ( "[действие]")] общественный IEnumerable WeatherForecasts () {вар USEREMAIL = User.Identity.Name; // например, Давид.
David Yee
1

голосов
3

ответ
50

Просмотры

Получить список Роли авторизованы пользователя

С моим кодом я могу получить только первую роль из списка. Как бы я сделать, чтобы показать все роли, которые вошли в систему пользователь имеет, с помощью бритвы @using System.Security.Claims @ {вар claimsIdentity = User.Identity в System.Security.Claims.ClaimsIdentity; вар roleOfUser = claimsIdentity! = NULL? claimsIdentity.Claims.FirstOrDefault (х => x.Type == ClaimTypes.Role) .Value: "Пользователь"; } @ Html.DisplayName ( "Профиль" + roleOfUser)
AllMuch
1

голосов
1

ответ
912

Просмотры

IdentityDbContext в Microsoft.AspNet.Identity.EntityFramework скрыть базовые DbContext конструкторов

Я использую Visual Studio 2013 RTM с asp.net MVC 5 Entity Framework осины сети провайдера идентификации Я делаю следующий общественный класс MyContext: IdentityDbContext {общественного MyContext (модель DbCompiledModel): базовая (модель) {} общественного DbSet Foos {получить; задавать; } общественного DbSet Bars {получить; задавать; }} И получить компиляции ошибки времени на этой линии общественной MyContext (модель DbCompiledModel): базовая (модель) Класс IdentityDbContext имеет возможность скрыть все конструкторы DbContext. Есть ли обходной путь?
taher chhabrawala
1

голосов
1

ответ
693

Просмотры

Использование Html.Action приводит строки запроса слишком долго ошибка

У меня есть _LayoutView: @ {Layout = "~ / Views / Shared / _NavLayout.cshtml"; } стили @section {@RenderSection ( "стили", требуется: ложные)} @ Html.Action ( "AccountNavigation") @RenderSection ( "InlineTitle", требуется: ложь) @RenderBody () @section скрипты {@ Scripts.Render ( "~ / связки / jqueryval") @RenderSection ( "сценарии", необходимая ложь)} это делает хорошо, если я удалю @ Html.Action ( "AccountNavigation") в противном случае я получаю: метод действия: [ChildActionOnly] общественный ActionResult AccountNavigation () {VAR роли = UserManager.GetRoles (User.Identity.GetUserId ()); ViewBag.IsAdmin = roles.Contains ( "Администратор"); вернуться PartialView ( "_ AccountNavigatorPartial"); } И Ive пытался зачистки его обратно просто: [ChildActionOnly] общественного ActionResult AccountNavigation () {ViewBag.IsAdmin = ложь; возвращать нуль; } Но это не имеет никакого значения. Один из взглядов ребенка, который использует раскладку Логин. [AllowAnonymous] общественного ActionResult Войти (строка ReturnUrl) {ViewBag.OidLoginFailed = ложь; ViewBag.ReturnUrl = ReturnUrl; вернуться View (); } Если я ставлю Пайонт перерыва там я могу видеть его называют несколько раз в запрос и наращивая ReturnUrl, пока не выйдет из строя, следовательно, сообщения об ошибке. Вот почему я раздел назад AccountNavigation ActionMethod. Я подумал, что запрос Анон причинял пост обратно через некоторые настройки конфигурации, который говорит, если Anon перенаправлять Вход и кругом было бы идти, но я не могу видеть, где это время срабатывает. _AccountNavigatorPartial счет просто: @ Html.ActionLink ( "Управление учетными данными", "Учетные данные", "Счет", routeValues: неопределенные, htmlAttributes: новый {ID = "credentialsLink"}) @ Html.ActionLink ( "Управление профилем", " Профиль»,„данные“, routeValues: Null, htmlAttributes: новый {ID =„credentialsLink“}) Так что все, что я пытаюсь сделать, это привнести некоторые HTML для навигации по аккаунту. Я использую ASP.Identity для членства, но я не могу видеть, как это делает никакой разницы, как я запрашивающий доступную страницу Анон. _AccountNavigatorPartial счет просто: @ Html.ActionLink ( "Управление учетными данными", "Учетные данные", "Счет", routeValues: неопределенные, htmlAttributes: новый {ID = "credentialsLink"}) @ Html.ActionLink ( "Управление профилем", " Профиль»,„данные“, routeValues: Null, htmlAttributes: новый {ID =„credentialsLink“}) Так что все, что я пытаюсь сделать, это привнести некоторые HTML для навигации по аккаунту. Я использую ASP.Identity для членства, но я не могу видеть, как это делает никакой разницы, как я запрашивающий доступную страницу Анон. _AccountNavigatorPartial счет просто: @ Html.ActionLink ( "Управление учетными данными", "Учетные данные", "Счет", routeValues: неопределенные, htmlAttributes: новый {ID = "credentialsLink"}) @ Html.ActionLink ( "Управление профилем", " Профиль»,„данные“, routeValues: Null, htmlAttributes: новый {ID =„credentialsLink“}) Так что все, что я пытаюсь сделать, это привнести некоторые HTML для навигации по аккаунту. Я использую ASP.Identity для членства, но я не могу видеть, как это делает никакой разницы, как я запрашивающий доступную страницу Анон. }) @ Html.ActionLink ( "Управление профилем", "Профиль", "Счет", routeValues: Null, htmlAttributes: новый {ID = "credentialsLink"}) Так что все, что я пытаюсь сделать, это привнести некоторые HTML для навигации по аккаунту , Я использую ASP.Identity для членства, но я не могу видеть, как это делает никакой разницы, как я запрашивающий доступную страницу Анон. }) @ Html.ActionLink ( "Управление профилем", "Профиль", "Счет", routeValues: Null, htmlAttributes: новый {ID = "credentialsLink"}) Так что все, что я пытаюсь сделать, это привнести некоторые HTML для навигации по аккаунту , Я использую ASP.Identity для членства, но я не могу видеть, как это делает никакой разницы, как я запрашивающий доступную страницу Анон.
rism
1

голосов
1

ответ
156

Просмотры

Есть ли способ запроса для всех пользователей и где положение с новым UserManager и UserStore в ASP.Net MVC5?

Мне было интересно, если есть способ запроса для всех пользователей с новым встроенными методами пользователя или я должен сделать хранилище для пользователей приложений? Asp.Net MVC5 с Entity Framework-6 и C #
Bob
1

голосов
1

ответ
680

Просмотры

Как переоформить маркера куки сеанса, когда пользователь его требования обновляется администратором?

Я занимаюсь разработкой приложения MVC5. Я застрял на простые ситуации, когда обновления сайта администратора утверждает коллекцию пользователя, вошедший в системе. Что является лучшей практикой для обновления анонимов требования пользователей?
Coffka
1

голосов
1

ответ
382

Просмотры

Операции ASP.NET Идентичность и ошибки

Я создал пользовательский класс UserStore в 5 вебе-сайте ASP.NET MVC, чтобы пользовательские чтения / записи в SQL Server, и у меня есть несколько вопросов ... Когда «результат уага = ждем UserManager.CreateAsync (пользователь, модель .Пароль);' вызывается из контроллера «общественной задачи FindByNameAsync (строка имя пользователя)» в UserStore называют первым, а затем «общественность Задача CreateAsync (пользователь TUser)» называется. Что останавливает второй счет одного и того же пользователя не создается в то же время? Как я могу поднять ошибки в «общественной целевой CreateAsync (пользователь TUser)», что приводит к «result.Succeeded == ложной» и «ошибка результата» в контроллере.
user3261445
1

голосов
1

ответ
84

Просмотры

Asp.net Идентичность GetUsersByRole перестал работать после версии 2.0

У меня есть следующий метод используется для получения всех пользователей, роли и она работает отлично до версии 2.0 была выпущена. Что-то изменилось? не Роль больше не существует, только что, но Идентификатор роли не является полезным, как мне нужно, чтобы получить доступ по имени ... кажется Microsoft удалена / перемещена это в другой класс? Не могу найти его в любом месте, хотя. Публичный список GetUsersByRole (строка UserRole) {возвращение (_accountRepository.Get.SelectMany (пользователь => user.Roles, (пользователь, роль) => {нового пользователя, роль}) .гд (х => x.role.Role.Name == UserRole) .Select (х => x.user)) ToList (). } Не объект Роль в x.role.Role.Name больше не решает.
devfunkd
1

голосов
1

ответ
189

Просмотры

Microsoft.Owin.Security.xyz OnAuthenticated не сохраняет в базе данных

Я использую ASP.NET 2.0 Идентичность. Я вижу много образцов ASP.NET, удостоверяющих личность, как это: Const строка XmlSchemaString = «http://www.w3.org/2001/XMLSchema#string»; вар facebookOptions = новые Microsoft.Owin.Security.Facebook.FacebookAuthenticationOptions {AppId = ConfigurationManager.AppSettings.Get ( "FacebookAppId"), AppSecret = ConfigurationManager.AppSettings.Get ( "FacebookAppSecret"), Provider = новый Microsoft.Owin.Security.Facebook .FacebookAuthenticationProvider () {OnAuthenticated = (контекст) => {вар претензии = новый System.Security.Claims.Claim ( "урна: facebook: access_token", context.AccessToken, XmlSchemaString, "Facebook"); Еогеасп (вар х в context.User) {строка ключ = String.Format ( "Урна: facebook: {0}", x.Key); строковое значение = x.Value.ToString (); claim.Properties.Add (ключ, значение); } Context.Identity.AddClaim (требование); вернуть Task.FromResult (0); }}}; AddClaim выглядит просто добавить эти претензии только в память. Не хранить в базе данных. Это нормально? Я имею в виду то, что я могу сделать, если я хочу, чтобы хранить эти требования в биллинговую и прочитать его после. Я мало вижу пример кода по этому поводу. Это нормально? Я имею в виду то, что я могу сделать, если я хочу, чтобы хранить эти требования в биллинговую и прочитать его после. Я мало вижу пример кода по этому поводу. Это нормально? Я имею в виду то, что я могу сделать, если я хочу, чтобы хранить эти требования в биллинговую и прочитать его после. Я мало вижу пример кода по этому поводу.
Will Huang
1

голосов
1

ответ
196

Просмотры

Entity Framework 6.0, ASP.Net Identity 2.0, Multiple Migrations, Related Classes

If my approach is wrong altogether please speak out. I am utilizing ASP.Net Identity 2.0. I have customized the classes (in my MembershipDbContext), in particular I have 2 classes: 1. CustomRoles (in fluent api renamed table to "App_CustomRoles") 2. CustomUserRoles (in fluent api renamed table to "App_CustomUserRoles") I have another context class, ApplicationDbContext that in this discussion pertains to the app's menu system. Respective menu items have a relationship with CustomRoles. That is to say, only users of a certain role type will be able to see them: public class DbMenu { // Backing Fields ... private ICollection _dbMenuRoles; public DbMenu() { ... _dbMenuRoles = new Collection(); } ... public virtual ICollection DbMenuRoles { get { return _dbMenuRoles; } set { _dbMenuRoles = value; } } public class DbMenuRole { ... // Foreign Keys [Required] public long FK_RoleId { get; set; } ... // Associations [ForeignKey("FK_RoleId")] public virtual CustomRole CustomRole { get; set; } ... } When I run migrations and then update database for each context, my sql db has 4 tables of which 2 are duplicates: Correct Ones (From MembershipDbContext): 1. App_CustomRoles 2. App_CustomUserRoles Incorrect Ones (From ApplicationDbContext): 1. CustomRoles 2. CustomUserRoles I would prefer to keep the Membership and the App's nav system in separate context classes. I tried fluent API in Application context to set the incorrect tables off to the aptly named correct tables, but that caused a build error. How can I correct this whilst keeping my classes in seperate context files? Thank You.
1

голосов
2

ответ
575

Просмотры

EF отображает неправильные таблицы с таял новой ASP Идентичность 2

Я пытаюсь сопоставить отношения один-ко-многим между пользователями и группами. Я хочу, чтобы пользователи имеют индивидуальный рейтинг для каждой группы они присоединяются, по отношению только к этой группе. К сожалению EF не будет отображать то, что я хочу, и я застрял, пытаясь выяснить, почему в течение 2-х дней. IdentityModels.cs: пространство имен MapGroupsToRoles.Models {// Вы можете добавить данные профиля для пользователя путем добавления дополнительных свойств к классу ApplicationUser, пожалуйста, посетите http://go.microsoft.com/fwlink/?LinkID=317594, чтобы узнать больше. общественный класс ApplicationUser: IdentityUser {общественного ApplicationUser () {this.RolesToGroups = новый HashSet (); } Общественное RolesToGroups виртуальных ICollection {получить; задавать; } Общественных асинхронным Task GenerateUserIdentityAsync (менеджер UserManager) {// Обратите внимание на AuthenticationType должен соответствовать один определенным в CookieAuthenticationOptions.AuthenticationType вар UserIdentity = жду manager.CreateIdentityAsync (это, DefaultAuthenticationTypes.ApplicationCookie); // Добавление пользовательского пользователя претензий здесь возврат UserIdentity; }} GroupToRoles общественного класса {общественного виртуального ИНТ GroupToRolesId {получить; задавать; } Общественных GroupToRoles () {} общественного виртуального ApplicationUser пользователя {получить; задавать; } Публичная виртуальная группа группа {получить; задавать; } Публичная виртуальная ClanRole Роль {получить; задавать; }} Общественного класса ApplicationDbContext: IdentityDbContext {общественного ApplicationDbContext (): базовый ( "DefaultConnection", throwIfV1Schema: ложь) {} общественного System.Data.Entity.DbSet GroupToRolesTable {получить; задавать; } Общественности статической ApplicationDbContext Create () {возвратить новый ApplicationDbContext (); } Защищен переопределения недействительным OnModelCreating (DbModelBuilder ModelBuilder) {modelbuilder.Entity () ToTable ( "Пользователи"). // modelbuilder.Entity () Игнорировать (и => u.Id). . Modelbuilder.Entity () HasKey (и => u.Id); . Modelbuilder.Entity () HasMany (и => u.RolesToGroups) .WithRequired () WillCascadeOnDelete (истинный). . Modelbuilder.Entity () ToTable ( "GroupToRolesTable") HasKey (и => u.GroupToRolesId). . Modelbuilder.Entity () HasKey (и => u.ProviderKey); . Modelbuilder.Entity () HasKey (и => u.RoleId); modelbuilder.Entity () ToTable ( "Группа"). . Modelbuilder.Entity () HasKey (и => u.GroupId); . Modelbuilder.Entity () HasMany (и => u.Roles) .WithRequired () WillCascadeOnDelete (истинный). }}} Выше: важные части, чтобы отметить здесь: общественный класс GroupToRoles {публичный виртуальный ИНТ GroupToRolesId {получить; задавать; } Общественных GroupToRoles () {} общественного виртуального ApplicationUser пользователя {получить; задавать; } Публичная виртуальная группа группа {получить; задавать; } Публичная виртуальная ClanRole Роль {получить; задавать; }} И общественное RolesToGroups виртуальных ICollection {получить; задавать; } Внутри класса ApplicationUser. Group.cs: пространство имен MapGroupsToRoles.Models {общественного класса группы {общественного ИНТ GroupID {получить; задавать; } Публичная группа () {this.Roles = новый HashSet (); } Публичная виртуальная строка GroupName {получить; задавать; } Общественных ролей виртуальных ICollection {получить; задавать; }}} Да, так какие результаты я получаю? 1. Оба Hashsets (т.е. GroupToRoles множество в Group.cs и ApplicationUser не появляется ... 2. В таблице группы отображается Group_GroupId1 и Group_GroupId ... где 1 приходит от ?! Любой помощи будет очень ценится !!!! EDIT_____________ Так повторно итерация я хочу отобразить пользователей к группам, где они имеют одну роль в каждой группе, и быть членом многих групп. Поэтому отображение одного ко многим между пользователем и классом «GroupToRoles» (который, в свою очередь, карты один ко многим группам). Пример: Джон является членом группы A, B, C для группы а он админ, группа б он является членом группы с он гостем Я не»
user2330270

Просмотр дополнительных вопросов