16

用例

我正在构建一个简单的注册和登录的 iPhone 应用程序。

当用户注册/登录时,我希望 Ruby (Sinatra) 服务器为该用户生成/获取并返回一个访问令牌,然后 iPhone 客户端可以使用基于 HTTPS 的基本身份验证随每个后续请求一起发送该访问令牌。

我还没有实现 OAuth 2.0,以便第三方应用程序可以访问服务器。现在,我只是在构建一个简单的内部 API(用于我自己的第一方 iPhone 应用程序)。

例子

基本上,我想生成一个类似于 Stripe 的 API 密钥:https ://manage.stripe.com/account/apikeys

例如:sk_test_NMss5Xyp42TnLD9tW9vANWMr

用Ruby说最好的方法是什么?

4

1 回答 1

29

Ruby 标准库提供了一整类安全随机数据生成器,称为SecureRandom. 无论你想要什么,你都可以在那里找到。

Stripe 的密钥本质上是 URL 安全的 Base64。你可以得到非常相似的东西:

require 'securerandom'

p "sk_test_" + SecureRandom.urlsafe_base64

(Stripe 确实会去除非字母数字字符,但如果您不想在键中使用连字符,这对 gsub 来说是微不足道的。)

于 2013-09-24T15:56:42.310 回答