cqc*_*991 17 session ruby-on-rails
我正在Rails中创建一个写作考试练习Web应用程序.问题是,如果用户的答案提交到互联网,ETS很容易检测到它们.因此,当用户在真实测试中再次写出他们的答案时,ETS会认为他们正在从互联网上回答答案并给予他们相当低的分数.
我的方法是将用户的eassay存储在会话中.所以它根本不会上传到互联网.但是,如何在会话中存储对象?
cri*_*ken 28
要在会话中存储内容,您可以执行以下操作:
session[:answer] = "some answer"
Run Code Online (Sandbox Code Playgroud)
然后您可以通过以下方式拨打答案:
session[:answer]
Run Code Online (Sandbox Code Playgroud)
或者您可以使用HTML5 localstorage:
<script>
localStorage.setItem("essay", "text");
localStorage.getItem("essay"); // => "text"
</script>
Run Code Online (Sandbox Code Playgroud)
会议
Rails会话旨在保持整个应用程序的一致性
IMO,会话最好用于存储数据的"片段"(例如单个对象ids等),最适合用于这些类型的函数:
数据库
您问的是如何在会话中存储人们的答案
我认为你应该将它们存储在数据库中,但要保护带有身份验证的数据库(例如Devise):
#app/controllers/answers_controller.rb
def new
@answer = Answer.new
end
def create
@answer = Answer.new(answer_params)
@answer.save
end
private
def answers_params
params.require(:answer).permit(:body, :question_id).merge(user_id: current_user.id)
end
Run Code Online (Sandbox Code Playgroud)
这将允许您将答案存储在数据库中(数据库可以在您的本地计算机,本地Intranet或任何您想要的地方)
安全
您的关键是保护您的数据
这个被称为Authentication,没有详细说明,这里有一个很好的资源:
http://railscasts.com/episodes/250-authentication-from-scratch

| 归档时间: |
|
| 查看次数: |
21502 次 |
| 最近记录: |