Rails 如何使用 cookies
喜歡作者的文章嗎?馬上按「關注」,當作者發佈新文章時,思書™就會 email 通知您。
思書是公開的寫作平台,創新的多筆名寫作方式,能用不同的筆名探索不同的寫作內容,無限寫作創意,如果您喜歡寫作分享,一定要來試試! 《 加入思書》
思書™是自由寫作平台,本文為作者之個人意見。
給本文個喜歡
或不
關於作者
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯
看看作者的其他文章
看看思書的其他文章
在 Rails 中,使用 Cookies 真是非常的簡單,基本上,就給 cookies 取個名,就可以讀取了,例如:
很簡單吧,以下是一些常用的 rails cookies 使用方式:
保護 cookie 的內容:
有很多時候,我們不希望 cookies 的內容被使用者看到,甚至更改,這時,就要使用:
signed 與 encrypted 的差異不大,一般使用上,如果只是不想要 cookies 的值被改,就用 signed,連值都不想被看到,就用 encrypted。
一次存取兩個以上的值
cookies 就只能存“一個”字串,要存一堆“值”的時候怎麼辦?很簡單,把“值”變成 JSON 存進去!
其他常用方法:
signed 與 encrypted 可以跟 permanent 混用,這也是大部分 rails 使用者的用法,
例外處理:Cookie 的存取是瀏覽器決定的,我的習慣是測試完後,將 cookies 的程式部分用 begin rescue end 包起來,畢竟,瀏覽器會怎麼報錯,很難說。
Cookie 管理:用瀏覽器就可以管理 cookie,在 Chrome 上,叫出「開發人員工具」, 選 application / Storage / Cookies 就可以更改刪除這一個 cookie 了, 實務上,我開發程式時都先不用 signed 或是 encrypted,這樣可以很容易的更改 cookie,開發測試完後,再改成 signed 或是 encrypted。
歐盟 GDPR:雖然歐盟對 cookies 的使用告知規定是制約網站由歐盟成員所有,但是 GDPR 也對網站有歐盟人士使用保護,如果你的網站是針對歐盟市場,你就必須要完備與加註 GDPR 警語,這裡有個 rails gem,也許對你網站需要 GDPR 警語時有幫助:
infinum/cookies_eu — Gem to add cookie consent to Rails application. Contribute to infinum/cookies_eu development by creating an account on GitHub.
GitHub
參考:
What is the difference between signed and encrypted cookies in Rails? — The documentation of ActionDispatch::Cookies gives nearly identical descriptions for both signed cookies and encrypted cookies. It appears that both use secrets.secret_key_base to prevent client-side Stack Overflow