根据该文档在https://www.godoc.org/golang.org/x/oauth2#Config.AuthCodeURL何时对oauth2中的授权码/状态进行随机化?
...状态,以防止CSRF攻击用户的令牌。你必须始终提供一个非零串...
,并在http://tools.ietf.org/html/rfc6749#section-10.12
...发送到重定向URI端点的任何请求,包括结合请求的值...
然而,这是专门在流程中没有会话数据的部分,即用户没有登录,并且只有在显示匿名页面时才生成授权码。
那么该值如何随机化并在回调时进行比较?它是每个服务器随机化的静态值吗?
的事情我感到困惑,虽然是“跟踪它,直到......”的一部分。假设可能有多个同时发生的请求,不能真正将其设置为全局变量。你是否建议添加/删除数据库行或什么? – davidkomer
您可以使用'map [string] user.Identifier'来存储您的状态以及用户标识符:'m [state] = userId'。当回调到达时,在地图中查找用户标识符,并将接收到的访问令牌与其关联。之后从地图上删除密钥。您可能希望使用某种形式的过期缓存来删除一段时间内尚未回叫的状态。 – Danilo
明白了 - 所以是的,和db一样的想法,但不需要像memcached那样是铁血的? – davidkomer