javascript - Rails 实时聊天:仅使用纯 JavaScript 实现它是否安全?
问题描述
我只使用 vanilla javascript 向我的 rails 应用程序添加了实时聊天。我已经把它包括在下面了。我只是想知道,看看我提供的代码是否有任何安全问题?我只是不确定 AJAX 注入是否有任何问题或我需要担心的任何未知未知数。我没有添加 ActionCable 主要是因为我不需要它的所有功能。谢谢你的帮助!:)
聊天中有 2 个用户之间的许多私人消息。用户有很多消息。我使用 pundit 添加了策略,因此只有授权用户才能访问聊天。而且我正在使用设计,因此只有登录的用户才能访问聊天。每个模型都使用 UUID。
聊天/show.html.erb
<% if @messages %>
<div id="messages">
<%= render @messages %>
</div>
<% end %>
<%= form_with(model: [@chat, Message.new], local: false, html: { id: "message-form" }) do |form| %>
<div class="field">
<%= form.text_area :content, placeholder: "Send a message" %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
消息/_message.html.erb
<%= message.user.name %>
<%= message.content %>
消息/create.js.erb
var messages = document.querySelector("#messages");
messages.insertAdjacentHTML("beforeend", "<%= j render(@message) %>");
document.getElementById("message-form").reset();
控制器/messages_controller.rb
def create
@chat = Chat.find(params[:chat_id])
@message = @chat.messages.build(message_params)
@message.user = current_user
authorize @message
respond_to do |format|
if @message.save
format.html { redirect_to @chat, notice: 'Message was successfully created.' }
format.js
format.json { render :show, status: :created, location: @chat }
else
format.html { redirect_to @chat, alert: 'Message not created.' }
format.json { render json: @message.errors, status: :unprocessable_entity }
end
end
end
控制器/chats_controller.rb
def show
@listing = Listing.find(params[:listing_id])
@chats = @listing.chats
@chat = Chat.find(params[:id])
if @chat.messages
@messages = @chat.messages
end
end
解决方案
推荐阅读
- raspberry-pi - 为什么用杯子打印pdf在树莓派上很慢,比如30秒后开始
- php - Route::get 带参数和重定向
- python - 为什么我在导入时不必指定子模块?
- c# - C# selenium 找不到元素
- angular - 如何在Angular6中使用forkJoin和ngrx进行多个HTTP调用?
- amazon-web-services - AWS Lambda 函数抛出读取超时。(读取超时=60)调用时
- java - Java web start 应用程序不会触发事件
- mysql - 如何将记录选择为单个记录以确定时间差
- r - 使用 Rmysql 替换表并保留所有表结构
- java - 如何使用 JPA 关系实体创建 RestAPI