0

用于 Google+ 服务器端身份验证的示例 Java 代码中,用于处理对 url 的请求的代码中有以下注释/connect

    // Normally the state would be a one-time use token, however in our
    // simple case, we want a user to be able to connect and disconnect
    // without reloading the page.  Thus, for demonstration, we don't
    // implement this best practice.
    //request.session().removeAttribute("state");

state属性是在默认路由 ( /) 的页面加载时生成的随机序列,并且必须由 ajax 调用提供/connect以使连接请求成功。

该注释暗示状态保留在会话中是不合适的,但在示例中只是为了允许用户重复登录和注销而将其注释掉。

但是,我确实希望用户能够随意登录和注销,而无需重新加载页面。如果我在会话中保留值,state我是否允许利用?我应该生成一个新状态并在 DOM 中的某处更新它/disconnect吗?还是我应该做一些完全不同的事情?

4

1 回答 1

2

简而言之,会话中设置的状态值用于防止跨站点请求伪造(CSRF/XSRF)。在示例中,我们在执行 OAuth v2 流程时具有完全可信的路径,因此对于特定场景,令牌验证是多余的。

有关 state 参数的更多信息,您可以查看:

相关问答在这里

于 2013-07-25T15:49:15.097 回答