2014-04-03 2 views
2

I 두 개의 응용 프로그램 Asp.net 4 개의 웹 응용 프로그램을 만들었습니다. 첫 번째 앱에서 한 명의 사용자를 만들고 해당 사용자로 로그인 한 다음 다른 앱을 시작하면 해당 사용자로 로그인됩니다. 하나의 응용 프로그램에서 내 자신의 멤버십 공급자 및 역할 공급자를 만들었습니다. 양식 인증을 사용했습니다. 하지만 그건 내 문제를 해결하지 못했다. 누군가가 정식 티켓이 두 가지 앱에 적합한 이유와이 문제를 해결하는 방법을 설명해 줄 수 있습니까? 어떤 코드를 보여야할지 모르겠습니다. 누군가 코드가 필요하면 보여 주겠다고 말해주세요.다른 응용 프로그램에 대한 인증 티켓이 동일합니다.

답변

2

그 이유는 응용 프로그램에 machineKey을 설정하지 않았기 때문입니다. 따라서 을 machine.config에 정의 된대로 사용하고 있습니다.

또한 동일한 호스트 이름 (아마도 포트가 다른 localhost)에서 두 개의 앱을 실행하고 있으므로 브라우저가 쿠키에 저장된 인증 티켓을 두 앱에 다시 보냅니다. 각 응용 프로그램 Web.Config에서

는 다른 machineKey을 설정하려고 :
<system.web> 
    <machineKey validationKey="1C4AF0D197F076CD6F6DBB14AB0A2D8D21D686040E829F3B1DC8B3A75011C5B9E7CA0AF3E56083F818A0B48E1C2358E2C4183B1D638C5F0C668591951A41B9A2" decryptionKey="2D41E8D77838F5EBBC0ACD1E8EC267379A109EF0B89CA8B229E35D13B0871705" validation="SHA1" decryption="AES" /> 
</system.web> 

나는 위의 키를 생성하는 MachineKey Generator을 사용했다.

+0

mashine.config 일부 Windows 파일입니까? 내 mashineKey를 어떻게 변경해야합니까? –

+1

시스템 폴더에 전역으로 저장됩니다. 그러나 당신은 그것을 변경해서는 안되며, 각각의 앱마다 서로 다른'machineKey'를 설정하거나 다른 호스트 이름으로 실행시켜야합니다. – haim770

+0

나는 이렇게하려고 애썼다. 그런 오류가 발생했다. 설명 :이 요청을 처리하는 데 필요한 구성 파일을 처리하는 동안 오류가 발생했습니다. 아래의 특정 오류 세부 정보를 검토하고 구성 파일을 적절히 수정하십시오. 파서 오류 메시지 : allowDefinition = 'MachineToApplication'으로 등록 된 섹션을 응용 프로그램 수준 이상으로 사용하면 오류가 발생합니다. 이 오류는 가상 디렉터리가 IIS에서 응용 프로그램으로 구성되지 않아 발생할 수 있습니다. –

2

두 응용 프로그램이 동일한 컴퓨터에서 호스팅되는 경우 동일한 쿠키를 사용하여 브라우저에 인증 티켓을 저장하는 것일 수 있습니다. 쿠키 이름을 변경하지 않으면 기본값은 .ASPXAUTH입니다. 각 응용 프로그램에 자체적 인 인증 티켓을 저장하려면 응용 프로그램 중 하나 또는 모두에 대한 쿠키 이름을 변경해야합니다. 당신의 Web.config에서

:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" name=".AppNameAuth" /> 
</authentication> 

나는 보통 응용 프로그램의 이름으로 AppName을 대체 .AppNameAuth로 변경.

관련 문제