2011-08-01 14 views
1

私は小さなアプリケーションを持っていて、いくつかの外部アプリケーションでhttpを介してhttpを介して残りのデータをこのサービスに送ります。私はすでにそれが働いているが、認証なし。私が使用するポータルでは、私の質問は:どのように(例が望ましい)Rubyスクリプトレベルからポータルを認証するか?最初に認証するために次のスクリプトに追加するもの私はこのコントローラーを念入りに保護したいと思っています。そして、次のスクリプトに認証部分が必要です。ここでruby​​スクリプトを使用して認証を作成する

require "net/http" 
require "json" 

@host = "localhost" 
@port = 3000 
@post_ws = "/external/rd" 

@req_body = { 
"device" => { 
    "name" => "device_json", 
    "operating_system_id" => "7", 
    "hash_string" => "jfsg3k4ovj0j02jv", 
    "user_id" => "1" 
} 
}.to_json 

req = Net::HTTP::Post.new(@post_ws, initheader = {'Content-Type' =>'application/json'}) 
req.body = @req_body 
response = Net::HTTP.new(@host, @port).start {|http| http.request(req) } 

よろしく、 はMateusz

+0

私はtoken_authenticatableが役立つかもしれない参照が、スクリプトからトークンを取得する方法を、これまでのところ知らないので、まだ解決していません:/ – Mateusz

答えて

4

ソリューションです:

私は工夫からtoken_authenticatable使用。

Hereは、jsonで実装する方法の大きな答えです。私はいくつかの問題を抱えて、それらをin this questionと記述しました。答えもあります。ここで

は、サンプルコードを行く:

require "net/http" 
require "json" 

@host = "localhost" 
@port = 3000 
@post_sign = "https://stackoverflow.com/users/sign_in.json" 
@post_ws = "/external/rd" 

@req_sign = { 
"user" => { 
    "email" => "[email protected]", 
    "password" => "123456" 
} 
}.to_json 

sig = Net::HTTP::Post.new(@post_sign, initheader = {'Content-Type' => 'application/json'}) 
sig.body = @req_sign 


http = Net::HTTP.new(@host, @port).start 
resp1 = http.request(sig) 
puts "Response: #{resp1.code} , Message: #{resp1.message} , Body: #{resp1.body}" 

if resp1.code == "200" then 
    puts "logged in" 
    json_resp = JSON.parse(resp1.body) 
    @auth_token = json_resp['auth_token'] 

    @req_body = { 
    "device" => { 
    "name" => "device_json", 
    "operating_system_id" => "7", 
    "hash_string" => "jfsg3k4ovj0j02jv" 
    }, 
    "auth_token" => @auth_token 
    }.to_json 
    req = Net::HTTP::Post.new(@post_ws, initheader = {'Content-Type' =>'application/json'}) 
    req.body = @req_body 

    response = http.request(req) 
    puts "Response: #{response.code} , Message: #{response.message} , Body: #{response.body}" 
end 

よろしく、 はMateusz

関連する問題