AspNet Core重定向循环中的Giraffe + GitHub OAuth流

穆尔德

我创建了一个测试应用程序,其中要使用GitHub Oauth流程,此处为示例代码:路由如下所示:

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时,如果将使用/ login路由调用Challenge命令:

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路由之前。我没有线索。

编辑6/14/2018:此处的有效解决方案:https : //github.com/EelcoMulder/GiraffeOAuth

穆尔德

函数编程中长颈鹿通道上的某个人(达摩克里克斯)为我解决了这个问题,事实证明,这是少即是多的情况,我犯了一个错误。mustBeLoggedIn处理程序应如下所示:

    let mustBeLoggedIn : HttpHandler =
        requiresAuthentication (challenge "GitHub")

并且可以删除路由“ / login”和“ / signin-github”,显然身份验证库比以前处理的更多。我将为此写一个博客,完成后将更新此帖子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章