想要将数据从 Android 应用程序发布到使用 Devise 进行身份验证的 Rails Web 应用程序

发布于 2024-12-09 15:29:21 字数 212 浏览 0 评论 0原文

我有一个现有的 Rails 应用程序,它使用 Devise 来处理身份验证。该应用程序在浏览器中运行良好。

我希望手机上的用户能够登录应用程序并将数据发布到表单中。这需要authentication_token,但是当我使用 JSON 登录时,响应不包含此信息。

我需要在initialisers/devise.rb 中更改哪些设置才能获取身份验证令牌?

安东尼

I have an existing Rails app which uses Devise to handle authentication. The app works fine in the browser.

I want a user on the phone to be able to sign into the app and post data into a form. This requires the authentication_token, however when I sign-in with JSON the response does not include this.

What setting do I need to change in initialisers/devise.rb to get the authentication token?

Antony

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撕心裂肺的伤痛 2024-12-16 15:29:21

我也不知道如何从 json 请求中获取 cookie。
我不久前做过类似的事情,但使用的是 yaml。
这就是我为获得令牌所做的事情。 (我用 application/json 替换了 text/yaml。再次不知道它是否有效,但可能值得一试。

  try {
     data = "--- \nusername: " + name + "\n" + "password: " + password;
     URL myserver = new URL(server + "wannabe");
     URLConnection con = myserver.openConnection();
     con.setRequestProperty("Content-Type", "application/json");
     con.setRequestProperty("Accept", "*, */*");
     con.setDoOutput(true);
     OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
     out.write(data);
     out.flush();
     BufferedReader in = new BufferedReader(
         new InputStreamReader(
             con.getInputStream()));
     String decode;
     while ((decode = in.readLine()) != null){
       output += decode;
     }
     out.close();
     in.close();
  } catch(IOException e){
    throw new TokenException("Wrong Username/password");
  }
  //Stripping begin and end quotes
  return output.substring(1, output.length() -1);

I dont really know how to get the cookies from a json request eigther.
I have done something similar a while back but with yaml.
This is what i did to get the token. (i replaced text/yaml by application/json. again donno if it works, but it might be worth a shot.

  try {
     data = "--- \nusername: " + name + "\n" + "password: " + password;
     URL myserver = new URL(server + "wannabe");
     URLConnection con = myserver.openConnection();
     con.setRequestProperty("Content-Type", "application/json");
     con.setRequestProperty("Accept", "*, */*");
     con.setDoOutput(true);
     OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
     out.write(data);
     out.flush();
     BufferedReader in = new BufferedReader(
         new InputStreamReader(
             con.getInputStream()));
     String decode;
     while ((decode = in.readLine()) != null){
       output += decode;
     }
     out.close();
     in.close();
  } catch(IOException e){
    throw new TokenException("Wrong Username/password");
  }
  //Stripping begin and end quotes
  return output.substring(1, output.length() -1);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文