2009-12-02 209 views
1

railscast #160base code工作我設立了一個非常簡單的網站,允許我登錄,註銷和註冊一個帳戶。 (它的不同之處在於我已經刪除了用戶的「用戶名」幾乎相同的遷移表和相關意見,只需要一個電子郵件地址)簡單的Authlogic問題:JSON登錄?

我現在正試圖創建一個新的登錄操作,以便我能通過JSON登錄。

我希望能夠向http://app:3000/[email protected]&password=p4ssw0rd發送獲取請求,並讓rails應用程序存儲請求來自的IP地址(如果登錄是正確的)併發送相關響應(以JSON格式)。

到目前爲止,它去我已經加入到controllers/user_sessions_controller.rb一節:

class UserSessionsController < ApplicationController 
    #... 
    def new_api 
    respond_to do |format| 
     format.json 
    end 
    end 
end 

routes.rb

map.apilogin "apilogin", :controller => "user_sessions", :action => "new_api" 

但我在茫然,要放什麼views/user_sessions/new_api.json.rb!你能幫我嗎?

回答

4

你根本不需要定義視圖 - 只需從控制器返回適當的json。

def new_api 
    @user_session = UserSession.new({:email => params[:email], :password => params[:password]}) 
    respond_to do |format| 
    if @user_session.save 
     format.json { render :json => {:success => true} } 
    else 
     format.json { render :json => {:success => false, :message => 'incorrect username or password'}, :status => :unauthorized } 
    end 
    end 
end 
+0

非常感謝您的回覆 - 它非常有幫助,但是我仍然對如何測試正確的登錄信息感到迷茫! 我'PARAMS [:電子郵件]'和'PARAMS [:密碼]'集,但AuthLogic不'@user_session = UserSession.new'自動挑選那些了 - 你知道我是如何通過我的(自帶標籤)登錄憑證到UserSession類? – 2009-12-03 12:10:50

+0

我編輯了我的答案,並創建了UserSession模型。看看Authlogic示例應用程序(http://github.com/binarylogic/authlogic_example/)。 – 2009-12-03 16:55:43

+0

太棒了!我一直在努力學習很多關於導軌的知識,感謝您的幫助! – 2009-12-03 19:03:43

0

你可以做這樣的事情:

def new_api 
    respond_to do |format| 
     format.json { render :json => user.slice(:name).to_json } 
    end 
    end 

或者你也可以生成views/user_sessions/new_api.json.erb的JSON,你會寫正常的erb代碼。不是一個好主意,但:

{"name":"<%= @user.name %>"}