如何为Rails设置远程JSON API以进行身份验证和会话

麦克

我是Rails的新手,对Devise Gem有相当基本的了解。除了CRUD和视图外,我不清楚它提供的内容是否可以帮助我与AngularJs应用程序与Rails Json Api进行对话。

此刻我正在手滚动东西。为了安全起见,我在客户端(js)和服务器之间交换了HTTP标头令牌。我还在使用Railscast#250进行用户身份验证-但由于我看不到如何将SessionController应用于远程客户端。

我可以采用任何策略通过远程json API进行身份验证和管理会话吗?

谢谢!

汤姆·普拉茨

我个人不会使用devise这样的东西,因为无论如何,您只会使用其中的一小部分

您几乎只是不使用会话。您需要做的就是每次都传递基本身份验证,然后在应用程序控制器中确定其是否有效,如果不是,则仅将其发送回身份验证错误。

请求示例: http://username:[email protected]/api/endpoint

class ApplicationController
  before_filter :check_auth!

  private
  def check_auth!
    username, password = ActionController::HttpAuthentication::Basic::user_name_and_password(request)
    user = User.find_by(username: username)
    if user && user.encrypted_password == SomeEncryptFunction(params[:password])
      @current_user = user
    else
      raise "error"
    end
  end
end

但是如果你想...

然后,您可以做的是DateTime在用户首次进行身份验证(开始会话)时更新用户字段,然后在随后的调用中,他们只需传递令牌,就给他们您每次登录时都进行检查。自他们首次通过身份验证以来,仅经过了一定的时间,否则他们的会话无效。

class SessionsController < ApplicationController
  skip_before_filter :check_auth!
  before_filter :login!

  private
  # Note: I don't remember the actual devise method for validating username + password
  def login!
    user = User.find_by(username: params[:username])
    if user && user.valid_password(params[:password])
      current_user = user
      current_user.update_attributes(
        authenticated_at: DateTime.now,
        authentication_token: Devise.friendly_token
      )
    else
      raise "error"
    end
  end
end

class ApplicationController
  before_filter :check_auth!

  private
  def check_auth!
    if valid_token(params[:token])
      current_user = User.find_by(authentication_token: params[:token])
    else
      raise "error"
    end
  end

  # Returns true if token belongs to a user and is recent enough
  def valid_token(token)
    user = User.find_by(authentication_token: params[:token])
    user && user.authenticated_at < DateTime.now - 1.day
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为Rails设置远程JSON API进行身份验证和会话

来自分类Dev

如何使用Guardian同时通过api和会话对用户进行身份验证?

来自分类Dev

如何修复A2身份验证和会话管理警告损坏?

来自分类Dev

向JSON REST API进行身份验证时如何获取会话令牌(在R中)

来自分类Dev

如何正确进行用户身份验证并维护与Tornado的会话?

来自分类Dev

使用Devise从Rails上的json api进行身份验证

来自分类Dev

有没有办法对远程会话进行身份验证以抓取数据并保持身份验证而不是在每个请求中进行身份验证?

来自分类Dev

如何使用HTTPS(基本身份验证)向Woocommerce API进行身份验证

来自分类Dev

如何使用身份验证令牌对 oracle 云 ipnetwork API 进行身份验证?

来自分类Dev

如何将应用程序laravel的会话和会话身份验证传递给软件包,反之亦然?

来自分类Dev

Firebase身份验证-设置会话到期

来自分类Dev

如何为API和UI设置不同的身份验证

来自分类Dev

如何使用PHP对Jira API进行身份验证

来自分类Dev

如何对用于Facebook API的UIViewController进行身份验证

来自分类Dev

如何对Quickbooks API进行身份验证/授权?

来自分类Dev

如何使用C#对GoDaddy API进行身份验证?

来自分类Dev

如何使用 Azure Management Fluent API 进行身份验证

来自分类Dev

HTTPS身份验证和会话劫持

来自分类常见问题

如何进行无状态(无会话)和无cookie的身份验证?

来自分类Dev

如何通过会话令牌和cookie安全地进行身份验证?更新

来自分类Dev

使用REST进行远程身份验证

来自分类Dev

使用REST进行远程身份验证

来自分类Dev

如何使用HttpURLconnection进行身份验证

来自分类Dev

如何进行WordPress身份验证?

来自分类Dev

如何通过代理身份验证进行远程登录?

来自分类Dev

如何为docker push进行身份验证?

来自分类Dev

Botframework如何先进行身份验证,然后使用令牌进行图形api调用

来自分类Dev

Google远程API允许仅使用经过身份验证的用户进行写操作

来自分类Dev

Rails API中的用户身份验证

Related 相关文章

  1. 1

    如何为Rails设置远程JSON API进行身份验证和会话

  2. 2

    如何使用Guardian同时通过api和会话对用户进行身份验证?

  3. 3

    如何修复A2身份验证和会话管理警告损坏?

  4. 4

    向JSON REST API进行身份验证时如何获取会话令牌(在R中)

  5. 5

    如何正确进行用户身份验证并维护与Tornado的会话?

  6. 6

    使用Devise从Rails上的json api进行身份验证

  7. 7

    有没有办法对远程会话进行身份验证以抓取数据并保持身份验证而不是在每个请求中进行身份验证?

  8. 8

    如何使用HTTPS(基本身份验证)向Woocommerce API进行身份验证

  9. 9

    如何使用身份验证令牌对 oracle 云 ipnetwork API 进行身份验证?

  10. 10

    如何将应用程序laravel的会话和会话身份验证传递给软件包,反之亦然?

  11. 11

    Firebase身份验证-设置会话到期

  12. 12

    如何为API和UI设置不同的身份验证

  13. 13

    如何使用PHP对Jira API进行身份验证

  14. 14

    如何对用于Facebook API的UIViewController进行身份验证

  15. 15

    如何对Quickbooks API进行身份验证/授权?

  16. 16

    如何使用C#对GoDaddy API进行身份验证?

  17. 17

    如何使用 Azure Management Fluent API 进行身份验证

  18. 18

    HTTPS身份验证和会话劫持

  19. 19

    如何进行无状态(无会话)和无cookie的身份验证?

  20. 20

    如何通过会话令牌和cookie安全地进行身份验证?更新

  21. 21

    使用REST进行远程身份验证

  22. 22

    使用REST进行远程身份验证

  23. 23

    如何使用HttpURLconnection进行身份验证

  24. 24

    如何进行WordPress身份验证?

  25. 25

    如何通过代理身份验证进行远程登录?

  26. 26

    如何为docker push进行身份验证?

  27. 27

    Botframework如何先进行身份验证,然后使用令牌进行图形api调用

  28. 28

    Google远程API允许仅使用经过身份验证的用户进行写操作

  29. 29

    Rails API中的用户身份验证

热门标签

归档