2011-11-24 3 views
3

양식 인증에 MVC 2.0을 사용하고 있습니다. 나는 "Logout"이라는 하나의 컨트롤러에 공개 액세스를 허용하려고합니다. 현재 내가 탐색 할 때마다 로그인으로 바운스됩니다.하나의 컨트롤러에만 익명 액세스를 허용하려면 어떻게합니까?

<authentication mode="Forms"> 
    <forms loginUrl="Login/Login" 
     protection="All" timeout="30" 
     name=".ASPXAUTH" 
     path="/" 
     requireSSL="false" 
     slidingExpiration="true" 
     defaultUrl="Token/Create" 
     cookieless="UseDeviceProfile" 
     enableCrossAppRedirects="false" /> 
</authentication> 

<!-- Deny Anonymous users. --> 
<authorization> 
    <deny users="?" /> 
</authorization> 


업데이트 : 내가 WIF와 나는 그들이 자신의 토큰의 최신 주장이 있는지 확인하기 위해, 그들을 로그인해야 사용자가 등록 페이지에 도달 할 때마다 (익명 액세스)를 사용하고, 부실 토큰으로 허용되지 않습니다. 그들의 요청은 등록 페이지를 통해 요청됩니다.

+1

어? 로그인하지 않은 사용자가 로그 아웃 할 수 있어야하는 이유는 무엇입니까? – SLaks

+0

나는 조금 이상하게 들린다. 나는 w.i.f를 사용하고 있으며 사용자가 등록 페이지 (익명 액세스)에 도착할 때마다 서명해야하며 토큰에 최신 클레임이 있는지 확인하고 부실 토큰을 허용하지 않습니다. 그들의 요청은 등록 페이지를 통해 요청됩니다. 덕분에 – Sean

답변

3

SLak에서 언급했듯이 로그인하지 않은 사용자가 로그 아웃 작업에 액세스 할 필요는 없습니다.

<location path="~/Logout"> 
    <system.web> 
    <authorization> 
     <allow users="?" /> 
    </authorization> 
    </system.web> 
</location> 

순수한 MVC 애플리케이션을위한 더 나은 방법이 Authorize 속성을 사용하고 모든에 액세스 할 수 있도록하는 것입니다 : 당신이 컨트롤러/행동에 대한 익명 액세스를 사용하려는 경우, 당신은 당신의 Web.config에서 활성화해야 web.config의 사용자.

+0

감사합니다. 로그 아웃에 액세스하기 위해 로그인하지 않은 사용자가 필요한 이유는 익명 액세스 페이지에서 나오기 때문에 로그 아웃해야하기 때문에 새 클레임이 포함 된 새 보안 토큰을 만들 수 있습니다. 이건 긴 이야기다! 위치 태그를 어디에 넣을까요? – Sean

+0

web.config – Jan

+0

@ Jan에서 작동하지 않습니다 ... 여전히 로그인 페이지로 리디렉션 중입니다. federatedAuthentication (STS)을 사용하고 있습니다 –

2

config에서 권한을 지정하는 것보다 컨트롤러 및/또는 컨트롤러 작업의 속성을 사용하는 것이 더 좋습니다. 인증 된 사용자로 제한하려는 동작에 대해 [Authorize]하고 속성이없는 동작은 공개적으로 사용할 수 있습니다.

+0

. 그래서 을 web.config에 넣으시겠습니까? – Sean

+0

인증 노드는있는 그대로 두십시오. 이전과 똑같이 인증을 받으려고합니다. 권한 부여 노드를 제거하기 만하면됩니다. –

관련 문제