2012-08-06 2 views
1

웹 사이트의 모든 익명 방문자에 대한 상태를 원활하게 유지하고자합니다. 예를 들어 처음 방문했을 때만 힌트를 표시하고 처음에는 "투표"버튼이 클라이언트에서 자바 스크립트를 분석하여 (서버 측에서 두 번째 수준의 IP 기반 필터링을 사용하여) 나타나는 "투표"버튼을 표시하지 못하게합니다.ASP.NET MVC 응용 프로그램의 익명 사용자에 대한 상태 정보 유지

클라이언트 브라우저에서 어떻게 이러한 쿠키를 관리 할 수 ​​있습니까? 이상적으로는 서버와 클라이언트 모두에서 읽고 쓸 수있는 사전으로 사용하고 싶습니다. 이것이 모두 기본 사항이라면, 사용자의 쿠키에 "hasVoted"bool 값을 할당하고 클라이언트와 서버에서이를 읽을 수있는 방법을 보여주십시오. 아무것도 내 생각이 근본적으로 잘못되면 알려 주시기 바랍니다

=)

답변

1

가) 내가 POST에서 일어나는 가정하는 (투표 후에는 쿠키 설정할 수 있습니다 :

[HttpPost] 
public ActionResult Vote() 
{ 
    HttpCookie hasVoted = new HttpCookie("hasVoted", true); 
    Request.Cookies.Add(hasVoted); 

    return RedirectToAction("Index"); 
} 

그리고 다음과 같이 그것을 얻을 :

[HttpGet] 
public ActionResult Index() 
{ 
    bool hasVoted = Request.Cookies["hasVoted"].Value;   

    return View(); 
} 

내가 hasVoted의 부울이하는 뷰 모델에 괴짜하고 .aspx 페이지에서 해당 값을 기준으로 버튼의 가시성을 설정하는 것이 걸릴 것이 일을 한 경우. 당신이 정말로하지만 원하는 경우에, 당신은 읽고 자바 스크립트를 사용하여 쿠키에 쓸 수 있습니다 :

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

확인이 밖으로 http://www.quirksmode.org/js/cookies.html

관련 문제