2012-06-28 2 views
1

ContentController의 MyAudio 메서드에서 반환되는 mp3 파일을 html5 오디오 태그를 통해 재생하려고합니다. 다음 코드를HttpContext.User.Identity를 사용한 Safari 문제

[Authorize] 
    public class ContentController : Controller 
    { 

     private ContentServices Content { get; set; } 

     protected override void Initialize(RequestContext requestContext) 
     { 
      if (requestContext.HttpContext.User.Identity.isAuthenticated) 
      { 
       base.Initialize(requestContext); 
      } 

     } 


    public ActionResult MyAudio(string name) 
    { 
     var file = Server.MapPath("~/" + name); 
     return File(file, "audio/mp3"); 
    } 

일반적인 HTML 코드

사용자가 모든 권한 크롬에서 완벽하게 작동합니다. 그러나 사파리에서 테스트했을 때 이상한 수수께끼가 있습니다. HttpContext.User.Identity.isAuthenticated는 false를 반환하고 물론 코드는 더 이상 실행되지 않습니다.

흥미로운 점은 예를 들어 @ Html.Action 또는 @ Html.RouteLink를 사용하면 HttpContext.User.Identity.isAuthenticated가 true를 반환한다는 것입니다.

저는 문제를 해결하기 위해 javascript와 jquery를 사용하려고했지만 Safari에서도 이상한 점이있었습니다.

<script type="text/javascript"> 
     function getAudio() { 
      if (audio.src == "" || audio.src == null) { 
       // (1) audio.src = '@Url.Content("~/Content/MyAudio")' + "hello.mp3"; 
       // (2) audio.src = '@Url.Action("MyAudio", "Content", new { name = "hello.mp3" })'; 
       /* (3) $.get('@Url.Content("~/Content/MyAudio")', {"name": "hello.mp3"}, 
       function(data) { 
       alert("hello"); 
       }); 
       */ 
       audio.load(); 
       audio.play(); 
      } 
     } 
    </script> 
(1)과 (2)와 동일한 문제가있다. 하지만 (3)을 사용하면 HttpContext.User.Identity.isAuthenticated가 Safary에서 true를 반환합니다. 하지만 난 u는 jquery를 통해 파일 스트림을 줄 수 없다고 생각합니다.

문제를 해결할 수있는 방법은 누구에게 알 수 있습니까?

는 PS 나는 당신에게 쿠키를 삭제하고 다시 시도하십시오 ASP.NET 개발 서버와 사파리 5.1.7에서 Win32 7.

+0

Safari의 어떤 버전을 사용하고 있습니까? – Ecnalyr

+0

Safary를 사용하고 있습니다. 5.1.7 Win32 7 –

+0

여기에서 문제의 원인을 알 수 있습니다. https://discussions.apple.com/message/18076941#18076941 – VJAI

답변

0

를 사용합니다. IsAuthenticated는 브라우저와 아무 관련이 없습니다. 브라우저에 저장된 유일한 정보는 쿠키 내에서 세션의 고유 식별자입니다. 지난 세션이 제대로 끝나지 않았을 수 있으며 브라우저에 쿠키가 남아있을 수 있습니다.

+0

Safari에서 모든 데이터를 지우지 만 도움 = \ –