【问题标题】:ruby on rails and android: How does JWT really work hereruby on rails 和 android:JWT 如何在这里真正工作
【发布时间】:2017-01-09 00:31:15
【问题描述】:

红宝石版本 2.2.4 轨道版本 5.0.0.1

大家好,

我只是编程的初学者,我的任务是使用 Android Studio 创建一个 Android 应用程序,您可以在其中以用户身份登录和注销。因此,我需要使用 Rails 服务器身份验证的 JSON API。

我学习了一个使用 Ruby on Rails 5 API (http://tutorials.pluralsight.com/ruby-ruby-on-rails/token-based-authentication-with-ruby-on-rails-5-api) 的基于令牌的身份验证教程。本教程展示了在使用 curl 发布凭据后如何使用 JWT 获取令牌。像这样将正确的凭据放入 curl 后

curl -H "Content-Type: application/json" -X POST -d '{"email":"example@mail.com","password":"123123123"}' http://localhost:3000/authenticate

我终于收到了以下令牌:{"auth_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE0NjA2NTgxODZ9.xsSwcPC22IR71OBv6bU_OGCSyfE89DvEzWfDU0iybMA"}

作为一个新手,我不知道下一步是什么。这个令牌是怎么回事?这对我有什么帮助,在android应用程序中实现登录功能?这会是什么样子?

【问题讨论】:

    标签: android ruby-on-rails android-studio authentication jwt


    【解决方案1】:

    您可能需要令牌来验证对服务器的每个请求。 目前,我正在使用 Retrofit 来执行请求,并使用 okhttp 重写拦截器或 Authenticator API 中的标头。 此外,您还必须查看应该有帮助的 Account Manager 文档,因为您可能必须刷新与帐户关联的令牌。

    【讨论】:

    • 您好,感谢您的回答。您说我需要令牌来验证对服务器的每个请求。所以我的理解是这样的:我在 android 上编写了一个方法,它使用来自用户的凭据(电子邮件、密码)调用 curl。然后会生成一个token,android上的程序调用第二个curl命令,其中包含token,这样用户就可以被授权了。我想对了吗?
    • 我对 curl 不是很熟悉,但据我所知流程是一样的: - 获取用户凭据(电子邮件和密码) - 发布请求以检索令牌 - 检查服务器响应(状态码 200,如果正确) - 使用电子邮件和授权码(不是密码)使用 Account Manages 创建新帐户。 - 然后在每个标头请求中,您必须添加令牌(例如使用拦截器)。客户经理还可以帮助您刷新令牌。
    • 好的,但我只需要使用我的 android 应用程序登录和注销,注册发生在 ruby​​ 服务器上:localhost:3000/users/sign_up。那我还需要客户经理吗?
    • 您不需要它,但它可以帮助您。我没有遇到过你的情况,但是如果你在帐户管理器中存储用户和令牌(你可以存储更多数据),当你想注销用户时,你只需要删除令牌,我想。令牌的好处之一是它是无状态的,因此请记住,您不需要保存会话。
    • 我遵循了一个教程 (sitepoint.com/…),它使用 Retrofit 与 php 服务器进行身份验证。我想为我的 RoR 服务器实现这个。尽管如此,我还是尝试了这一点。它可以与我在 Rails 服务器上的 ruby​​ 通信。如果我使用正确的凭据登录 android 应用程序,我会在 cmd 行上看到它将被接受。但我没有得到任何回报。正如我所说,我在 RoR 中使用 JWT,它会返回一个长令牌。 Retrofit 是否有可能解释这个标记?还是我需要为 Android 安装 JSON Web Token?
    【解决方案2】:

    您向 API 发出的每个请求都可能需要此令牌。您应该将其作为标题放在您发出的每个 API 请求中。此外,这可以作为您会话的指示。

    【讨论】:

    • 好的,但我仍然不明白这一切是如何连接在一起的。我有一个带有登录按钮的 android 应用程序。用户点击它并提供他之前在 Rails 服务器上注册的电子邮件和密码。 android 程序如何知道电子邮件和密码是否正确? android-program 和 rails server 如何连接?我在 ruby​​ on rails 中有一个 Msql 数据库。我认为有保存的电子邮件和密码。但是这个令牌起什么作用呢?它是否保存在其他地方?对我来说很难掌握..
    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多