[英]Rails Security - Enforcing ownership at the model level
我最近在我的網站上設置了“好友”功能。 它的工作方式是,如果一個用戶想要與另一個用戶“交朋友”,發送請求將創建一個user_connection記錄,其中原始用戶設置為user_id,而請求的用戶設置為contact_id。 如果另一個用戶接受了請求,則將創建另一個user_connection記錄,其中user_id和contact_id顛倒了。 如果兩個user_connections都存在,則將這兩個用戶視為朋友。 當前,這使每個用戶都可以訪問兩個用戶之間共享的任何建築物。
我想知道是否可以通過某種方式強制執行user_connection模型,以確保將創建記錄的人設置為user_id。 否則,似乎有人可以欺騙user_connection創建請求以使自己成為他們想要的任何人的聯系人,然后可以使用相同的方法欺騙建立共享。 有內置的方法可以防止這種情況嗎?
我的第一個想法是要有一個始終將user_id設置為current_user的ID的初始化程序,但似乎current_user不在模型上下文的范圍內。
禁止使用強參數將user_id作為參數提供。
因此,您可以創建如下關系:
@friendship = current_user.friendships.new(contact_id: other_user.id)
還要確保為current_user提供正確的條件。
就是這樣... user_id是暗含的,但從未提供。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.