API设计-一个域上的应用程序,另一个域上的API。如何在不传递用户id的情况下检索特定于用户的数据

API设计-一个域上的应用程序,另一个域上的API。如何在不传递用户id的情况下检索特定于用户的数据,api,go,Api,Go,我正在尝试使用Golang和Angular JS构建一个非常简单的web应用程序(用于学习目的) 我对Go和AngularJS代码很熟悉,但在创建适当的API结构时遇到了困难 目前,我已经将运行应用程序的所有代码和API代码捆绑在一起 理想情况下,我希望将其分离出来,这样我就可以在app.mything.com这样的子域上运行我的应用程序,并在API.mything.com上运行API 我的问题是我的API有MYSQL调用,比如- select * FROM sometable where us

我正在尝试使用Golang和Angular JS构建一个非常简单的web应用程序(用于学习目的)

我对Go和AngularJS代码很熟悉,但在创建适当的API结构时遇到了困难

目前,我已经将运行应用程序的所有代码和API代码捆绑在一起

理想情况下,我希望将其分离出来,这样我就可以在app.mything.com这样的子域上运行我的应用程序,并在API.mything.com上运行API

我的问题是我的API有MYSQL调用,比如-

select * FROM sometable where userid = userID
userID是保存在会话中的用户ID

因此,虽然所有代码都捆绑在一起,但这是可能的,并且工作正常。 如果我将代码分为两个独立的子域,那么会话将无法在这两个子域上访问

这样的事情怎么可能实现呢

谢谢
Dave有两种方法可以解决这个问题:

  • 将会话存储更改为API和应用程序都共享的内容(即:)
  • 开始使用(加密的)cookies而不是会话数据

  • 有两种方法可以解决此问题:

    • 将会话存储更改为API和应用程序都共享的内容(即:)
    • 开始使用(加密的)cookies而不是会话数据

    您仍然可以访问用户ID

    • API.domain.com上的API服务器可以在登录时将ID保存在会话cookie中。cookie将用于
      api.domain.com
      域。默认情况下,用于获取签名cookie
    • www.example.com
      (不同域)上的Angular客户端由于浏览器对cookie强制执行的错误,将根本无法读取/写入cookie,但仍将以AJAX请求的形式将cookie发送回
      api.domain.com
      服务器
    根据Angular docs($http),您需要设置
    withCredentials=true
    ,以便在跨域请求时发送cookie(参考:)。请求获取cookie(例如,通过HTTPS发布登录凭据),然后连续的AJAX请求将该cookie呈现给服务器


    另一种方法是发行OAuth2承载令牌(“令牌身份验证”),在后端(Redis、Bolt、mySQL等)记录令牌用户ID,并让Angular应用程序将其保存在本地存储中,并在每个请求的头中发送

    您仍然可以访问用户ID

    • API.domain.com上的API服务器可以在登录时将ID保存在会话cookie中。cookie将用于
      api.domain.com
      域。默认情况下,用于获取签名cookie
    • www.example.com
      (不同域)上的Angular客户端由于浏览器对cookie强制执行的错误,将根本无法读取/写入cookie,但仍将以AJAX请求的形式将cookie发送回
      api.domain.com
      服务器
    根据Angular docs($http),您需要设置
    withCredentials=true
    ,以便在跨域请求时发送cookie(参考:)。请求获取cookie(例如,通过HTTPS发布登录凭据),然后连续的AJAX请求将该cookie呈现给服务器

    另一种方法是发行OAuth2承载令牌(“令牌身份验证”),在后端(Redis、Bolt、mySQL等)记录令牌用户ID,并让Angular应用程序将其保存在本地存储中,并在每个请求的头中发送