Я создал тестовое приложение, в котором я хочу использовать поток Oauth GitHub, пример кода здесь: Маршрутизация выглядит следующим образом:
let webApp =
logRequest >=> choose [
GET >=>
choose [
route "/" >=> indexHandler "world"
route "/login" >=> loginHandler
route "/signin-github" >=> signinHandler
]
mustBeLoggedIn >=>
GET >=>
choose [
route "/api" >=> indexHandler "authenticated world"
]
setStatusCode 404 >=> text "Not Found" ]
Когда я вызываю / api, if вызовет * 1004Команда * challenge с маршрутом / login:
let mustBeLoggedIn : HttpHandler =
requiresAuthentication (redirectTo true "/login")
let loginHandler =
challenge "GitHub"
Поток запускается, и кажется, что все идет хорошо, пока не будет инициировано событие OnCreatingTicket .Это вызывает вызов на https://api.github.com/user, дважды по некоторым причинам.Я настроил путь обратного вызова:
options.CallbackPath <- new PathString("/signin-github")
С помощью Fiddler я вижу выше URL beeing, который вызывается тогда, но перенаправляется на / login (который перенаправляет обратно на GitHub, следовательно, цикл), и я не знаю, почему и чтоперенаправляет./ Signin-github не требует аутентификации.Я добавил некоторые логи, но единственный маршрут называется / login, так что кажется, что перенаправление происходит до того, как будет выполнена маршрутизация Giraffe.Понятия не имею.
Редактировать 14.06.2008: Рабочее решение здесь: https://github.com/EelcoMulder/GiraffeOAuth