本篇文章更新時間:2023/07/27
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
剛好最近實作一個會員網站的功能,有一些購買行為發生後會賦予的權限新增。
但如果是登入狀態下的使用者沒有去「重新載入」一次設定就不會套用上,那使用體驗就不正確。
有時候也不一定有合適的勾點來讓程式切入作動。
那重置使用者狀態的方式就可以參考:讓他登出,重新登入來滿足觸發條件!
有個常見的例子就是換帳號、密碼相關的個人資訊更新。更新完成後提示登出重新登入,一方面確保你還記得這些資訊,二來也是可能順便踢掉其他可能同時間還在線上的惡意使用者。
要讓使用者登出的方法有下面幾種方式:
-
最暴力是直接從
wp-config.php中,把下面這些「鹽」給改些字,或是透過這服務來替換一遍下面這些鹽,就可以把全站使用者(包含自己)都登出。define( 'AUTH_KEY', '9+@A!U!cxcN/wJr<vb[kaxjRAm!*E!0|e2-)=;[j`<O8[oW/plFl}qgBKmg6a 3|' ); define( 'SECURE_AUTH_KEY', '1mN9Zi{IZcvk#JUGhq<qxsr1O,)f-TVlIgFK|38[2-2_{6u:Xj]+t[SEbydAP}(?' ); define( 'LOGGED_IN_KEY', 'I=:V2J&a?LJI3p9?B,;+7xE9k)y_,~_xBW6c#||U>Id3n7-yg64{`P)scL^9{yp)' ); define( 'NONCE_KEY', 'RLwyYvu(yn3YBxLydKPi)-L*0p.+M_Ae0ix<x:w;VoD|TjzxRIm]lQB=>gQ!!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()
相關的外掛也不少,大多會跟安全性主題綁在一起。開發上有這個彈性在,掌握一下也是好事!
