Проблема была решена для меня, убедившись, что схема куки была последовательно названа, где бы она ни использовалась. например :
public void ConfigureServices(IServiceCollection services)
{
// if using IdentityServer4
var builder = services.AddIdentityServer(options =>
{
options.AuthenticationOptions.AuthenticationScheme = Constants.DefaultCookieAuthenticationScheme;
...
})
services.AddIdentity<MyUser, IdentityRole>(options =>
{
options.Cookies.ApplicationCookie.AuthenticationScheme = Constants.DefaultCookieAuthenticationScheme;
...
}
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = Constants.DefaultCookieAuthenticationScheme,
AutomaticAuthenticate = false,
AutomaticChallenge = true
});
}
И при взаимодействии с промежуточным программным обеспечением аутентификации. например :
await HttpContext.Authentication.SignInAsync(Constants.DefaultCookieAuthenticationScheme, cp);
Я поздно присоединился к теме, но хочу ввести свой ответ здесь:
В моих последних двух проектах есть разные тенденции, например, в одном из них мы использовали:
Чтобы получить данные: s <имя таблицы> _G
Чтобы удалить данные: s_D
Чтобы вставить данные: s <имя таблицы> _I
Чтобы обновить данные: s_U
Эти соглашения об именах также сопровождаются во внешнем интерфейсе префиксом слова dt .
Пример:
exec sMedicationInfo_G
exec sMedicationInfo_D
exec sMedicationInfo_I
exec sMedicationInfo_U
С помощью приведенных выше соглашений об именах в в нашем приложении у нас есть хорошие и легко запоминающиеся имена.
В то время как во втором проекте мы использовали те же соглашения об именах, но с разницей:
Чтобы получить данные: sp_
G
Чтобы удалить данные: sp_D
Чтобы вставить данные: sp_I
Чтобы обновить данные: sp_U
Пример:
exec sp_MedicationInfoG
exec sp_MedicationInfoD
exec sp_MedicationInfoI
exec sp_MedicationInfoU