我正在處理我的MVC項目中的投票機制應用程序,我要求用戶只能在瀏覽器中投票一次,如果他第二次到達投票頁面同一個瀏覽器,他不應該能夠投票,但如果他在另一個瀏覽器登錄,他應該能夠再次投票。
爲此,我使用了Cookie來處理這種情況。我所做的是我已經將用戶ID添加到Cookie,並在查看頁面我檢查是否可見投票按鈕。
我的看法是
Cookies獲取更新而不是添加
@if ((ViewData["CookieData"] == null) || (ViewData["CookieData"].ToString() != Session["LoginPersonID"].ToString()))
{
<button name="button" value="Insert" onclick="return confirm('Are you sure you want to submit your choices ?.');">Vote Now!!</button>
<br />
@Html.ActionLink("Back to Home Page", "EmployeeHomePage", "Employee", new { logedinperson = Session["LoginPersonID"] }, null);
}
和我的控制器是
public void AddCookie()
{
HttpCookie MyCookie = new HttpCookie("MyCookie", Session["LoginPersonID"].ToString());
MyCookie.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(MyCookie);
ViewData["CookieData"] = MyCookieCollection;
}
當第一個用戶說,在Firefox和票PERSONA登錄,他PERSONID存儲在cookie中,所以,如果他試圖達到投票頁面上的投票按鈕將不可見,但隨後他會嘗試在Google Chrome上打開,然後投票。這些投票也按預期工作。現在,當Firefox中的PersonB登錄並投票給他的personid更新的cookie中,所以他也不能在第二次在同一瀏覽器中投票。
但我確切的問題是,當PersonA再次登錄到Firefox時,他可以投票,因爲cookie已經更新了PersonB的ID。那麼無論如何,如果他們已經在瀏覽器中投票,我怎麼能限制PersonA和PersonB。
我試過如下,仍然沒有得到 var LoginPID = Session [「LoginPersonID」]。ToString(); HttpCookie MyCookie = new HttpCookie(「MyCookie-」+ LoginPID, 「Voted」); MyCookie.Expires = DateTime.Now.AddDays(30); Response.Cookies.Add(MyCookie); ViewData [「CookieData」] = MyCookieCollection; 這是你的意思嗎? –