如何使用devise_token_auth访问令牌启动HTML用户会话?

时间:2016-05-05 16:21:29

标签: android ruby-on-rails devise android-webview http-token-authentication

我有一个使用devise和devise_token_auth宝石的rails 4应用程序。我希望我的rails应用程序通常用于html请求的设计,并使用devise_token_auth来检索访问令牌。所有上述工作都很好。

现在,从我的REST客户端,我想使用access_token标头来检索html根页面。

在我的application_controller中,如果我添加以下行:

include DeviseTokenAuth::Concerns::SetUserByToken

来自RESTClient的主页请求设置了访问令牌标头,并将用户重定向到登录页面。但是,当我尝试在浏览器中登录并通过设计注册时,无论我在哪里使用user_signed_in,都会出错?和其他设计方法。

如果我从application_controller中删除上述行,所有具有常规登录和注册的浏览器调用都可以正常工作(使用相关重定向),但我无法通过设置access_token标头从REST客户端获取主页。

这是根控制器代码:

home_controller.rb

def index
  if user_signed_in?
     redirect_to logged_in_path
  end
end

以下是请求和回复:

1:在application_controller

中存在SetUserByToken行

1.1来自RESTClient:

Url: http://10.0.1.15:3000
Method: GET
Request Headers:

Access-Token: aaaaaaaaaaa
Token-Type: Bearer
Client: bbbbbbbbbbbb
Expiry: 1234567
Uid: foo@bar.com

Response: 200 Ok
<Redirected to member home page>

1.2来自网页

Error where user_signed_in? is called

2:在Application_controller

中使用SetUserByToken行NOT SET

2.1来自RESTClient:

Url: http://10.0.1.15:3000
Method: GET
Request Headers:

Access-Token: aaaaaaaaaaa
Token-Type: Bearer
Client: bbbbbbbbbbbb
Expiry: 1234567
Uid: foo@bar.com

Response: 200 Ok
<NO REDIRECT to member home page> (user_signed_in? in the index action returns false)

2.2来自网页

<Can login, gets redirected to logged in page>

如何从常规浏览器和REST客户端使用该网站?

实际的目标是拥有一个Android客户端应用程序(而不是REST客户端,一旦解决了这个问题),用户从本机代码登录,输入电子邮件和密码,以及成功返回访问令牌,切换到显示WebView的活动,该活动使用登录的用户加载会话。在WebView中,用户保持登录状态并可以浏览所有页面。如果用户从本机客户端注销,那么访问令牌将被丢弃,用户也将从服务器会话中注销。

0 个答案:

没有答案