Ruby on rails Rails:如何在会话中存储数据?

Ruby on rails Rails:如何在会话中存储数据?,ruby-on-rails,session,Ruby On Rails,Session,我正在Rails中制作一个写作考试练习web应用程序。问题是,如果用户的答案被提交到互联网上,ETS很容易就能发现。所以,当用户在真实测试中再次填写答案时,ETS会认为他们在应对来自互联网的答案,并给他们一个相当低的分数 我的方法是在会话中存储用户的easay。所以它根本不会上传到互联网上。 但是,如何在会话中存储对象 Rails将数据存储在数据库中(不必在“Internet”上) 在会话中存储大量数据是一个非常糟糕的主意 会话 旨在保持整个应用程序的一致性 在我看来,会话最适合用于存储数据的

我正在Rails中制作一个写作考试练习web应用程序。问题是,如果用户的答案被提交到互联网上,ETS很容易就能发现。所以,当用户在真实测试中再次填写答案时,ETS会认为他们在应对来自互联网的答案,并给他们一个相当低的分数

我的方法是在会话中存储用户的easay。所以它根本不会上传到互联网上。 但是,如何在会话中存储对象

  • Rails将数据存储在数据库中(不必在“Internet”上)
  • 在会话中存储大量数据是一个非常糟糕的主意

  • 会话

    旨在保持整个应用程序的一致性

    在我看来,会话最适合用于存储数据的“片段”(例如单个对象、
    ids
    等),并且最适合用于以下类型的函数:

    • 购物车
    • 以安全为中心的系统(保持数据安全)
    • 身份验证(保持用户登录)

    数据库

    您所问的是如何在会话中存储人们的答案

    我认为您应该将它们存储在数据库中,但应使用(例如)保护该数据库:

    这将允许您将答案存储在数据库中(数据库可以位于本地计算机、本地Intranet或任何您想要的位置)


    安全性

    您的关键是保护您的数据

    这被称为
    身份验证
    ,无需详细说明,这里有一个很好的资源供您使用:


    要在会话中存储内容,您可以执行以下操作:

    session[:answer] = "some answer"
    
    然后,您可以使用以下命令调用答案:

    session[:answer]
    
    或者您可以使用HTML5本地存储:

    <script>
      localStorage.setItem("essay", "text");
      localStorage.getItem("essay"); // => "text"
    </script>
    
    
    setItem(“随笔”、“文本”);
    localStorage.getItem(“随笔”);//=>“文本”
    
    我的方法是在会话中存储用户的easay。它会的 根本不能上传到互联网上

    从技术上讲,这是不正确的。rails中会话的默认实现是基于cookie的。因此,如果您向会话写入内容,它将写入客户端上的cookie。对于您的服务器的每个请求,cookie都会被发送到服务器,我假设服务器以某种方式连接到internet

    此外,Cookie和会话的大小也受到限制(约4kb)。因此,您可能无法在会话中存储所有内容

    问题是如果用户的答案被提交到互联网上, 它们很容易被ETS检测到

    这才是真正的问题:

    通常,如果不希望其他人(如ETS)阅读您的内容,您会限制对内容的访问。通过密码或其他方式


    因此,使用某种身份验证(由@Rich Peck回答),要特别小心,只有在成功的身份验证后,你的内容才可见,不要给ETS密码,你应该没事。

    我认为在会话中存储完整的文章不是一个好主意,您为随笔保存了一条偏执记录,并将随笔id存储在会话中。您提供了在rails中与会话进行交互的方法。但我不知道它是怎么工作的。您能帮我清楚地解释一下
    session
    如何在Rails中工作吗?请阅读并
    <script>
      localStorage.setItem("essay", "text");
      localStorage.getItem("essay"); // => "text"
    </script>