gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:15:48 25 4
gpt4 key购买 nike

我创建了一个测试应用程序,我想在其中使用 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 时,if 将使用/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 路由完成之前。我不知道。

2018 年 6 月 14 日编辑:此处的工作解决方案:https://github.com/EelcoMulder/GiraffeOAuth

最佳答案

函数式编程的长颈鹿 channel 上的某人(damukles)为我解决了这个问题,结果是less is and more的情况,我犯了一个错误。 mustBeLoggedIn 处理程序应如下所示:

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

并且可以删除路由“/login”和“/signin-github”,显然 auth 库处理的比以前更多。我会写一篇关于这个的博客,完成后会更新这篇文章。

关于oauth - AspNet Core 重定向循环中的 Giraffe + GitHub OAuth 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50515716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com