Class: AuthingRuby::Common::PublicKeyManager
- Inherits:
-
Object
- Object
- AuthingRuby::Common::PublicKeyManager
- Defined in:
- lib/authing_ruby/common/PublicKeyManager.rb
Instance Method Summary collapse
- #getPublicKey ⇒ Object
-
#initialize(options = {}) ⇒ PublicKeyManager
constructor
A new instance of PublicKeyManager.
Constructor Details
#initialize(options = {}) ⇒ PublicKeyManager
Returns a new instance of PublicKeyManager.
12 13 14 15 16 |
# File 'lib/authing_ruby/common/PublicKeyManager.rb', line 12 def initialize( = {}) @options = @public_key = nil # 用于缓存公钥,免得每次都发请求 @baseClient = Authentication::BaseAuthenticationClient.new() end |
Instance Method Details
#getPublicKey ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/authing_ruby/common/PublicKeyManager.rb', line 18 def getPublicKey # 用传进来的 publicKey option_publicKey = @options.fetch(:publicKey, nil) return option_publicKey if option_publicKey != nil # 用缓存的 publickKey return @public_key if @public_key != nil # 发请求获取 publicKey appHost = @baseClient.appHost() url = "#{appHost}/api/v2/.well-known" begin response = HTTP.get(url) rescue HTTP::ConnectionError => e # 处理失败情况 puts "authing_ruby gem 错误 HTTP::ConnectionError" puts "访问的 URL 是 #{url}" puts "如何解决:有可能是 appHost \"#{appHost}\" 填写错误,appHost 可能并不存在,请确认。" puts "第二种可能原因是您本地开启了 VPN,导致无法访问 \"#{appHost}\",您可手动访问此网站进行确认。" raise e.class, "Message: #{e.}" return end response_text = response.body.to_s # {"code":200,"message":"获取成功","data":{"publicKey":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4xKeUgQ+Aoz7TLfAfs9+paePb\n5KIofVthEopwrXFkp8OCeocaTHt9ICjTT2QeJh6cZaDaArfZ873GPUn00eOIZ7Ae\n+TiA2BKHbCvloW3w5Lnqm70iSsUi5Fmu9/2+68GZRH9L7Mlh8cFksCicW2Y2W2uM\nGKl64GDcIq3au+aqJQIDAQAB\n-----END PUBLIC KEY-----\n"}} json = JSON.parse(response_text) publicKey = json['data']['publicKey'] @public_key = publicKey # 存入缓存 return publicKey end |