在 Ruby 脚本中存储用户令牌的最佳方式
Best way to store a user token in Ruby script
我正在开发一个 Ruby 脚本,专为基于 REST API 的 CLI 而设计。 API 需要一个令牌作为凭据,以便识别用户并允许他检索他的信息。
目前,此脚本每次启动时都会在控制台中询问 30 长度的令牌。
现在我想存储这个令牌以避免每次用户想要使用脚本时都询问它。我不知道最好的方法是什么,我是否必须创建一个包含令牌的隐藏文件,或者要求用户将其存储在环境变量中?
我想使用环境变量解决方案,但我不知道它是否适用于 Windows 或 Linux。
组合所有方法。像这样:
def get_my_token()
if ENV["MY_TOKEN"]
return ENV["MY_TOKEN"]
end
token_path = File.expand_path("~/.my_token") # will be expanded to user's home (Documents or smth) in windows, check it yourself as I don't have running windows around here
if File.exists?(token_path)
return File.read(token_path).strip
end
# resort to asking user for token here
end
ENV 应该放在第一位 - 这样您就可以在出于某些测试目的需要时覆盖您的配置。另请注意,您也可以 运行 您的脚本 MY_TOKEN=xxxx ruby my_app.rb
。
我正在开发一个 Ruby 脚本,专为基于 REST API 的 CLI 而设计。 API 需要一个令牌作为凭据,以便识别用户并允许他检索他的信息。 目前,此脚本每次启动时都会在控制台中询问 30 长度的令牌。
现在我想存储这个令牌以避免每次用户想要使用脚本时都询问它。我不知道最好的方法是什么,我是否必须创建一个包含令牌的隐藏文件,或者要求用户将其存储在环境变量中?
我想使用环境变量解决方案,但我不知道它是否适用于 Windows 或 Linux。
组合所有方法。像这样:
def get_my_token()
if ENV["MY_TOKEN"]
return ENV["MY_TOKEN"]
end
token_path = File.expand_path("~/.my_token") # will be expanded to user's home (Documents or smth) in windows, check it yourself as I don't have running windows around here
if File.exists?(token_path)
return File.read(token_path).strip
end
# resort to asking user for token here
end
ENV 应该放在第一位 - 这样您就可以在出于某些测试目的需要时覆盖您的配置。另请注意,您也可以 运行 您的脚本 MY_TOKEN=xxxx ruby my_app.rb
。