Tôi muốn bỏ qua xác thực khi tôi đang cố chỉnh sửa người dùng là quản trị viên.Làm cách nào để bỏ qua xác thực là quản trị viên trong update_attributes?
Mẫu
class User
...
attr_accessible :company_id, :first_name, :disabled, as: :admin
khiển
class Admin::UsersController
...
def update
@user = User.find(params[:id])
@user.update_attributes(params[:user], as: :admin)
redirect_to edit_admin_user_path(@user), :notice => "User Account Updated"
end
Vì vậy, tôi đã cố gắng để thay đổi update
hành động để
def update
@user = User.find(params[:id])
@user.attributes = params[:user]
@user.save(validate: false)
redirect_to edit_admin_user_path(@user), :notice => "User Account Updated"
end
Nhưng sau đó tôi không có quyền truy cập vào thiết lập :disabled
và :company_id
thuộc tính, vì tôi không biết được nơi để thiết lập as: :admin
Tôi mới cho đường ray. Việc này có an toàn không? Liệu phương pháp này không đánh bại điểm của các thông số mạnh? Hoặc là các thông số mạnh chủ yếu cho các lỗ hổng được giao hàng loạt? –
các tham số mạnh mẽ dành cho lỗ hổng phân khối, bạn có thể sử dụng xác thực ngữ cảnh kết hợp với điều đó, tôi chưa bao giờ sử dụng nó để kiểm tra vai trò, thường là khi một mô hình được cập nhật từ nhiều biểu mẫu và xác thực cần phải khác nhau giữa chúng – house9