2013-06-02 348 views
3

使用OAuth 2我只需限制用户对允许资源的访问权限,其中API通过ext.js REST代理进行连接。 ext.js代理负责数据检索并维护模型关系。我还没有找到一种优雅的方式来进行从代理到后端的不同呼叫,具体取决于用户登录。Sencha touch 2 oauth2身份验证

我想知道,如果代理登录到我的应用程序,每个用户都必须不同有他们自己的访问令牌。

另一种选择是在代理初始化过程中让代理了解登录用户并以持久方式保存这些信息。

有没有人解决过类似的情况?

回答

1

该文章详细介绍了如何在Sencha Touch中使用OAuth2。

有几种方法可以使用OAuth。在初始认证后使用重定向(为此,您可以在Sencha登录视图内使用iFrame)。另一个使用后端服务器作为OAuth服务器的中介,可以避免iFrame解决方案,但需要更多的服务器逻辑。

然后,您可以使用会话cookie,该cookie将与所有HTTP请求(包括您的REST呼叫)重新发送。大多数后端支持会话cookie,因此您只需查找存储在会话对象中的用户ID,作为REST API代码的一部分。

另一种选择是在每个需要验证的REST调用中设置自定义HTTP标头。为避免重复代码,请从Sencha代理类创建派生类以设置包含访问令牌的标头。您可以将访问令牌存储在Store或Application对象中,或作为代理的静态值存储。我已经为REST代理调用和Sencha Direct代理调用完成了此操作。

AJAX代理报头属性: