2013-06-06 1 views
1

폼 인증을 사용하는 asp.net 웹 사이트가 있습니다. Microsoft Word 문서의 웹 사이트에있는 보안 페이지에 대한 링크를 제공하면 이미 웹 사이트에 로그인되어 있어도 반환 URL을 설정합니다. 즉, 로그인 페이지로 리다이렉트되어 권한이 부여되지 않은 액세스 페이지로 안내되는데 이는 해당 페이지를 볼 수있는 권한이 있음을 의미합니다.ASP.net은 사용자가 이미 로그인했을 때 링크에서 returnURL을 설정합니다.

의 Web.config 코드 :

 If Request.IsAuthenticated AndAlso Not String.IsNullOrEmpty(Request.QueryString("ReturnUrl")) Then 
      ' This is an unauthorized, authenticated request... 
      Response.Redirect("~/UnauthorisedAccess.aspx") 
     End If 

경우 :

<authentication mode="Forms"> 
    <forms protection="All" requireSSL="true" name="BSOAuthCookie" loginUrl="~/Login/Login.aspx" defaultUrl="~/secure/securepage.aspx" cookieless="UseCookies" timeout="30" /> 
</authentication> 

이 내 로그인 페이지의 페이지로드의 코드가 unauthorsied 액세스 페이지에 저를 리디렉션하는 것입니다 나는 이메일에 같은 링크를 넣고 제대로 작동하는 것으로 보인다.

답변

1

requireSSL="true"을 사용하면 인증 된 쿠키를 보안 페이지에서만 읽을 수있게하므로 보안되지 않은 페이지는 인증을 통과하지 못합니다.

코드에이 코드를 추가하고 IsAuthenticated 앞에 보안 페이지에서 호출했는지 다시 한 번 확인하십시오.

Debug.Assert(HttpContext.Current.Request.IsSecureConnection 
                , "Must be on secure page"); 

또한 하위 도메인 모두에서 설정 될 authendicated 쿠키를 강제로 www 밖으로 상기 domain="sitename.com" 세트.

<authentication mode="Forms"> 
    <forms domain="sitename.com 
     protection="All" requireSSL="true" name="BSOAuthCookie" 
     loginUrl="~/Login/Login.aspx" defaultUrl="~/secure/securepage.aspx" 
      cookieless="UseCookies" timeout="30" /> 
</authentication> 
+0

링크를 클릭하면 보안 페이지로 연결됩니다. 모든 요청은 사용자가 로그인하자마자 https를 통해 전송됩니다. 또한 로그인 페이지의 내 페이지로드 메소드에 http를 https로 수정하는 코드 블록이 있습니다. 위의 내 페이지로드 방법을 참조하십시오. – Azeem

+0

그런 다음'domain'을 시도해보고 Assertion을 두 번 체크하도록 설정하십시오. – Aristos

+0

감사 Aristos! 나는 당신이 제안한 것을 시도했지만 여전히 동일하게하고있다. – Azeem