简单的Authlogic问题:JSON登录?

时间:2009-12-02 02:09:28

标签: ruby-on-rails ruby json authlogic

railscast #160 base code工作我设置了一个非常简单的网站,允许我登录,注销和注册帐户。 (它几乎完全相同,只是我从用户迁移表和相关视图中删除了'用户名',因此只需要一个电子邮件地址)

我现在正在尝试创建一个新的登录操作,以便我可以通过JSON登录。

我希望能够向http://app:3000/apilogin?email=my@email.com&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中的内容感到茫然!你能帮忙吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 %>"}
相关问题