台灣最大程式設計社群網站
線上人數
982
 
會員總數:246138
討論主題:189722
歡迎您免費加入會員
討論區列表 >> ASP.NET >> WEBFORM 存取COOKIE錯誤問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
WEBFORM 存取COOKIE錯誤問題
價值 : 100 QP  點閱數:326 回應數:10
樓主

pkko
門外漢
0 30
612 66
發送站內信

各位大大好,
小弟是使用WEBFORM進行開發一個簡易網站
在登入之後將使用者名稱存放在COOKIE內使用
在VISUAL STUDIO的本地環境執行下都沒有問題
而實際放上網站後,一般執行都沒問題

實際問題:
只要網站超過20分鐘沒有使用
接著按下按鈕觸發LOAD 表單的功能後就會變成執行階段錯誤
請問各位大大錯誤在哪邊...因為本地執行沒有這個問題,找不到問題點在哪...

1.INDEX的登入功能程式碼如下:




2.表單LOAD的程式碼如下:



搜尋相關Tags的文章: [ webform ] , [ cookie ] ,
本篇文章發表於2020-04-05 13:33
== 簽名檔 ==
努力!努力!再努力!!!
1樓
回應

P陳
檢舉此回應
因為 Cookie 沒有註明壽命的話,只保留20分而已
本篇文章回覆於2020-04-05 22:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

pkko
檢舉此回應
我在登入的時候有註明壽命


是哪邊錯了嗎?
還是每一次讀取完畢cookie都要重新給他一次壽命?
本篇文章回覆於2020-04-06 00:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

MIS2000 Lab
檢舉此回應
您的答案,應該在這篇文章有講到

講得很清楚(中文文章)
https://dotblogs.com.tw/shadow/2011/12/15/62306
本篇文章回覆於2020-04-06 07:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

pkko
檢舉此回應
感謝回復
只是這篇我看過了
我也重新再看了一次
我確實也有設定過期為三天
但仍不知為何超過20分鐘就ERROR

還是我上述程式碼有哪邊奇怪的地方嗎?
本篇文章回覆於2020-04-06 11:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
建議將 Class 存入 Cookie 並簡單給值,或許能解決您的問題。


本篇文章回覆於2020-04-06 23:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
您的問題或許在於對Cookie的除錯

推薦您可以使用Chrome的擴充功能【EditThisCookie】

把他安裝起來,然後您就可以透過該擴充,輕鬆地檢視您系統中的Cookie狀態
來觀察Cookie是否如您預期的執行

^_^

---
題外話
在登入之後將使用者名稱存放在COOKIE內使用


您在Cookie中存放登入的訊息
不知道您是拿來做什麼用的
如果是拿來當作【身分識別】,那麼對於系統的安全性會有疑慮

有興趣的話可以聊聊這個部分

^.^a
本篇文章回覆於2020-04-07 09:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

pkko
檢舉此回應
請問五樓的大大:
存入class 之後是該電腦內存取,還是該網站都存取?

感謝六樓的版主大大:
登入資訊如果不放在cookie 裡面
請問要放在哪邊?可以跨網頁之後能仍讀取登入資訊呢?
本篇文章回覆於2020-04-07 10:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
登入資訊如果不放在cookie 裡面
請問要放在哪邊?可以跨網頁之後能仍讀取登入資訊呢?


登入驗證後的資訊,當作使用者的識別
通常可以這樣做
1.放Session
放在Session中,由於資料存放在Server端,因此駭客無法直接取用

2.放資料庫,然後產生有時效性的Token存放Cookie
由於Cookie可以輕易地被取用、改寫
因此,如果放使用者的名稱David當作是身分識別
那麼,David登入後,他知道隔壁的同事他的帳號是John,於是他把Cookie改成John
就可以用John的身分使用系統?
這樣不是很不安全

如果,把資料放資料庫,並且產生一個Token的欄位,一個逾時的欄位
以亂數的方式產生【不重複、亂數、英數混和】的資料當作Token
(例如:GUID)
a.由於是亂數,使用者無法用改寫而切換身分
b.由於有時效性,盜德後超過時效無效

如果要更完整一些,甚至每次收到POST的時候,就換一組Response寫回Cookie
這樣還可以順便阻擋【CSRF】的攻擊

以上訊息提供您參考

^_^

本篇文章回覆於2020-04-07 11:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

MIS2000 Lab
檢舉此回應
可以參考這些文章,他們也都是用Cookie來做

FormsAuthentication ,從 ASP.NET (Web Form)到 MVC 5都可以用
Youtube教學影片 - https://www.youtube.com/watch?v=0nFlssh60Pw

會員登入 與 FormsAuthentication (Web.Config裡面的 authentication mode="Forms")
https://dotblogs.com.tw/mis2000lab/2014/08/01/authentication-mode-forms_web-config

..................................................................
ASP.NET Core 改用 ClaimsIdentity(但跟上一個作法很類似,寫法大同小異)
Youtube教學影片 - https://youtu.be/eRa-hdsDfB4

[會員登入] 不使用ASP.NET Core Identity 的 Cookie 驗證 (ClaimsIdentity)
https://dotblogs.com.tw/mis2000lab/2020/02/14/AspNet_Core_Authentication_cookie_ClaimsIdentity
本篇文章回覆於2020-04-07 13:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

pkko
檢舉此回應
我最後發現不是cookie的問題
原來是asp.net 網站 若是使用多台伺服器,會導致每台伺服器產生的machine key不同而導致當機

我選擇一個比較簡單的方式
將machine key 直接輸入到config裡面就解決這個問題了
非常感謝大家^_^
本篇文章回覆於2020-04-11 14:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.