Owin Facebook Ошибка входа в систему ТОЛЬКО на производственной площадке MVC Azure

Будучи программистом VB.NET, которому необходимо использовать программу на C ++ с 50+ открытыми функциями и файл .h, который спорадически использует спецификатор const, трудно узнать, когда обращаться к переменной с помощью ByRef или ByVal.

Конечно, программа сообщает вам, генерируя ошибку исключения на строке, где вы допустили ошибку, но тогда вам нужно угадать, какой из 2-10 параметров неверен.

So теперь у меня есть неприятная задача попытаться убедить разработчика, что они должны действительно определять свои переменные (в файле .h) таким образом, который позволяет автоматически автоматизировать метод создания всех определений функций VB.NET. Затем они самодовольно скажут: «прочитайте ... документацию».

Я написал awk-скрипт, который анализирует файл .h и создает все команды Declare Function, но без указателя относительно того, какие переменные являются R / O vs R / W, он делает только половину задание.

EDIT:

При поощрении другого пользователя я добавляю следующее:

Вот пример плохо сформированного (IMO). h entry;

typedef int (EE_STDCALL *Do_SomethingPtr)( int smfID, const char* cursor_name, const char* sql );

Результат VB из моего скрипта;

    Declare Function Do_Something Lib "SomeOther.DLL" (ByRef smfID As Integer, ByVal cursor_name As String, ByVal sql As String) As Integer

Обратите внимание на отсутствующую «const» в первом параметре. Без него программа (или другой разработчик) не имеет идеи, первый параметр должен быть передан «ByVal». Добавляя «const», он делает сам файл .h, так что разработчики, использующие другие языки, могут легко писать рабочий код.

0
задан user2977157 2 March 2019 в 20:25
поделиться

1 ответ

Итак. Оказывается, что в настоящее время Овин будет работать таинственным образом, если в нем не будет предварительно существующего файла cookie ASP.NET_SessionID. Без этого функция signin-facebook не удаляет cookie-файл .Aspnet.Correlation.Facebook и не устанавливает cookie-файл .Aspnet.ExternalCookie. Отсутствие файла cookie идентификатора сеанса каким-либо образом препятствует выполнению требуемой обработки файла cookie. Все это создает условия для периодических сбоев в зависимости от состояния файла cookie клиента.

Обходной путь - сохранить поддельную переменную Session при создании формы с помощью входа в Facebook, что заставляет создавать cookie-файл SessionID перед любыми входами в систему Owin.

Обратите внимание, что мы используем SystemWebCookieManager (в надежде избежать таких проблем с файлами cookie). Похоже, что вещи все еще развиваются.

Для справки, вот настройка cookie в нашей функции ConfigureAuth:

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            CookieManager = new SystemWebCookieManager(), 
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            ExpireTimeSpan = TimeSpan.FromMinutes(Params.LoginExpiryMinutes), 
            SlidingExpiration = true,
            LoginPath = new PathString("/Login"),
            Provider = new CookieAuthenticationProvider // Used to allow returning 401 Unauthorized status to API calls, instead of 302 redirect
            {
                OnApplyRedirect = ctx =>
                {
                    if (!IsAjaxRequest(ctx.Request))
                    {
                        ctx.Response.Redirect(ctx.RedirectUri);
                    }
                }
            }
        });

        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
0
ответ дан user2977157 2 March 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: