Я только начал Rails 3. Я сгенерировал приведенный ниже код, используя скаффолд из Rails 3 для таблицы под названием «Logs».
Функция 'index' ниже предоставляет только записи, связанные с current_user.id (из сеанса, хранящегося в таблице сеансов).Записи пользователей представлены только со следующим маршрутом, зарегистрированным как user = 3 (см. Код индекса ниже)
localhost: 3000 / logs
Проблема: Как пользователь, я могу просмотреть запись, которая не является моей записью (будучи пользователем = 3), отредактировав URL вручную, чтобы показать любую другую запись:
localhost: 3000 / logs / 5'это было введено user.id = 2'
Поиск решения : Как предотвратить взлом URL-адреса вручную для предотвращения просмотра пользователем других записей пользователя?
class LogsController
before_filter: login_required
def index
@logs = Log.where(:user_id => current_user)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @logs }
end
Пожалуйста, игнорируйте, что новая функция отсутствует в функции создания ниже.Приведенный ниже код просто демонстрирует, как я помещаю user_id в таблицу «Logs»
def create
@log = Log.new(params[:log])
@log.user_id = current_user.id
respond_to do |format|
if @log.save
format.html { redirect_to(@log)}
format.xml { render :xml => @log, :status => :created, :location => @log }
else
format.html { render :action => "new" }
format.xml { render :xml => @log.errors, :status => :unprocessable_entity }
end
end