0
我正在使用Dana Mulder的教程編寫一個簡單的消息應用程序https://medium.com/@danamulder/tutorial-create-a-simple-messaging-system-on-rails-d9b94b0fbca1#.xjhgikji4 但是,在能夠獲得工作系統後,我意識到任何用戶都可以通過瀏覽網址來查看其他用戶消息。如何解決Rails授權不足的問題?
例如,用戶可以迭代此URL中的號碼http://localhost:3000/conversations/3/messages並查看所有其他消息不在其中的地方。我試圖添加一些保護,但沒有運氣。有人會知道如何解決這個應用程序的授權不足問題嗎?謝謝!。
這裏是我的conversations_controller.rb
class ConversationsController < ApplicationController
before_action :confirm_logged_in
layout 'authenticated'
def index
@users = User.all
@conversations = Conversation.all
end
def create
if Conversation.between(params[:sender_id],params[:recipient_id]).present?
@conversation = Conversation.between(params[:sender_id], params[:recipient_id]).first
else
@conversation = Conversation.create!(conversation_params)
end
redirect_to conversation_messages_path(@conversation)
end
private
def conversation_params
params.permit(:sender_id, :recipient_id)
end
end
這裏是messages_controller.rb
class MessagesController < ApplicationController
layout 'authenticated'
before_action do
@conversation = Conversation.find(params[:conversation_id])
end
def index
@messages = @conversation.messages
if @messages.length > 10
@over_ten = true
@messages = @messages[-10..-1]
end
if params[:m]
@over_ten = false
@messages = @conversation.messages
end
if @messages.last
if @messages.last.user_id != current_user.id
@messages.last.read = true;
end
end
@message = @conversation.messages.new
end
def new
@message = @conversation.messages.new
end
def create
@message = @conversation.messages.new(message_params)
if @message.save
redirect_to conversation_messages_path(@conversation)
end
end
private
def message_params
params.require(:message).permit(:body, :user_id)
end
end
Thanks @Long Nguyen,是的,我正在使用current_user。我試圖通過添加代碼並刪除現有代碼來更改消息控制器,但我收到以下錯誤消息:未定義的方法消息爲# –
Zero
@零更新。請再試一次。由於'where'返回ActiveRecord關係而不是對象(一個發現記錄的數組),在這個查詢中,我們知道它最多隻會返回一條記錄,因此我們將調用'.first'來獲取唯一的記錄。 –
非常感謝!這是完美的。 – Zero