[WordPress] 強迫登出使用者的方法 – WP_Session_Tokens

本篇文章更新時間:2023/07/27
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


剛好最近實作一個會員網站的功能,有一些購買行為發生後會賦予的權限新增。

但如果是登入狀態下的使用者沒有去「重新載入」一次設定就不會套用上,那使用體驗就不正確。

有時候也不一定有合適的勾點來讓程式切入作動。

那重置使用者狀態的方式就可以參考:讓他登出,重新登入來滿足觸發條件!

有個常見的例子就是換帳號、密碼相關的個人資訊更新。更新完成後提示登出重新登入,一方面確保你還記得這些資訊,二來也是可能順便踢掉其他可能同時間還在線上的惡意使用者。

要讓使用者登出的方法有下面幾種方式:

  • 最暴力是直接從 wp-config.php 中,把下面這些「鹽」給改些字,或是透過這服務來替換一遍下面這些鹽,就可以把全站使用者(包含自己)都登出。

    
    define( 'AUTH_KEY',         '9+@A!U!cxcN/wJrId3n7-yg64{`P)scL^9{yp)' );
    define( 'NONCE_KEY',        'RLwyYvu(yn3YBxLydKPi)-L*0p.+M_Ae0ixgQ!!nYw' );
    define( 'AUTH_SALT',        'nRS@4N3$g,kF%+ 8s7=&VTO:}CE>6s~|iDnXWT6SPY=,264+dW4j-xfFu,,jkAN8' );
    define( 'SECURE_AUTH_SALT', '.VQNFJA(~E149mq$?iEU_I=p@>NvT.jaz|1tbkMBXVS8pD52jYQ|wQuTa[;/;y.v' );
    define( 'LOGGED_IN_SALT',   'yuE=2iIxBT83A}uCiE4c91a+G`hUPW(bQnqSqq1L-N9FvU+aoM;npkeGMzK]?[sd' );
    define( 'NONCE_SALT',       'GX5+rPd %PIoj_;NVjIaMwiFcB.ur(EGt`MFK#Cq+&w^)fAwLvSSXKz(6Ir_x|o+' );
    ```
  • 再來就是本文重點,比較優雅一點的中斷某個(或全部)使用者的方法:WP_Session_Tokens。 WordPress 4.0 後出的功能。

    $sessions = WP_Session_Tokens::get_instance($user_id);
    $sessions->destroy_all();

    代入 `$user_id` 為使用者的 ID 就可以把該使用者給登出。又或者是全部使用者強迫登出的做法:

    WP_Session_Tokens::destroy_all_for_all_users()

相關的外掛也不少,大多會跟安全性主題綁在一起。開發上有這個彈性在,掌握一下也是好事!


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

參與討論

1 則留言

  1. 自動引用通知: [WordPress] 登出網站閒置使用者的方法 – 一介資男

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon