如何防止任何人提交表单?现在,任何用户都可以在任何其他用户的个人资料上更新表单,而他们应该只能触摸自己的个人资料。
如果表单不在当前用户的个人资料中,我应该隐藏表单,还是在控制器内做一些更安全的事情?
例如,我有一个创建新书的表单。实际上,表单应该显示的唯一时间是在登录用户的个人资料页面上。该表格应隐藏在其他人的个人资料页面上。
形式:
<%= form_for @book do |f| %>
<%= f.hidden_field :user_id, :value => @user.id %>
<%= f.hidden_field :status, :value => "f" %>
<%= f.text_field :title, :placeholder => "Title" %>
<%= f.text_field :author, :placeholder => "Author" %>
<%= f.submit 'Add Book', :value => "" %>
<% end %>
编辑:
我开始使用 CanCan,但仍然无法限制在其他用户的个人资料上创建书籍的访问权限。
我的新技能.rb:
class Ability
include CanCan::Ability
def initialize(user)
can :read, :all
can :create, Book
end
end
在应用程序控制器中过滤之前:
class ApplicationController < ActionController::Base
before_filter :current_user
def current_user
User.current = current_user
end
end