以编程方式设计基于用户的身份验证

时间:2012-12-21 07:45:54

标签: ruby-on-rails authentication login devise titanium-mobile

我正在以编程方式为基于用户登录的身份验证申请使用设计宝石,但无法成功。我知道对于基于设计的登录,我需要传递用户的电子邮件和密码。我是否需要传递任何其他参数。在浏览器上,我可以使用用户电子邮件和密码登录,但以编程方式获取Unauthorized访问权限。

虽然程序在titanium,但我认为无关紧要,重要的是你传递给rails服务器的参数。

我的控制台输出1没有在钛中添加user参数:

Started POST "/users/sign_in" for 192.168.0.187 at 2012-12-21 12:57:32 +0530
Processing by Devise::SessionsController#create as URL_ENCODED_FORM
  Parameters: {"password"=>"[FILTERED]", "email"=>"Gjpu "}
Completed 401 Unauthorized in 1ms

在钛中添加user参数后我的控制台输出2:

Started POST "/users/sign_in" for 192.168.0.187 at 2012-12-21 13:03:19 +0530
Processing by Devise::SessionsController#create as URL_ENCODED_FORM
  Parameters: {"user"=>"{password=6f278077d841b3385e06bfa99acb374f, email=gjmwtp
gj}"}
Completed 401 Unauthorized in 1ms

我的钛代码打到了rails服务器 -

loginBtn.addEventListener('click',function(e)
{
    if (username.value != '' && password.value != '')
    {
        loginReq.open("POST","http://192.168.0.187:3000/users/sign_in");

        var params = {user: { email: username.value , password: Ti.Utils.md5HexDigest(password.value)}};

        //var params=JSON.parse(myparams);
        loginReq.send(params);
    }
    else
    {
        alert("Email/Password are required");
    }
});

1 个答案:

答案 0 :(得分:0)

我现在可以使用自定义设备会话控制器进行身份验证,并在create方法中添加两行。

@user = User.find_by_email params[:email]
sign_in_and_redirect @user, :event => :authentication

诀窍奏效了。谢谢!