2014-07-01 1 views
1

동일한 IIS (7.5)의 동일한 응용 프로그램 풀에 두 개의 asp.net 응용 프로그램 (.NET 4.5)이 있습니다. 그들의 인증 테이블은 두 개의 다른 데이터베이스에서 왔습니다. 내 문제는 한 응용 프로그램에 로그인 할 때 다른 응용 프로그램에 동일한 사용자 ID가없는 경우에도 다른 응용 프로그램에 로그인된다는 것입니다.2 asp.net 응용 프로그램에서 별도의 세션을 갖는 방법

분명히 두 응용 프로그램이 동일한 세션을 공유하고 있습니다. 각 응용 프로그램의 Web.config 파일을 다음과 같이 업데이트했습니다.

<sessionState 
    cookieName="some_unique_name" 
    timeout="30"> 
</sessionState> 
<membership defaultProvider="SqlProvider"> 
    <providers> 
    <clear/> 
    <add 
     name="SqlProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="AuthCorporate" 
     applicationName="some_unique_name"/> 
    </providers> 
</membership> 

신원 및 인증 구성과 관련이있을 수 있습니다. 나는이 두 응용 프로그램을 만드는 실종 무엇

public void ConfigureAuth(IAppBuilder app) 
{ 
    // Enable the application to use a cookie to store information for the signed in user 
    app.UseCookieAuthentication(new CookieAuthenticationOptions 
    { 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/Account/Login") 
    }); 
} 

자신의 별도의 세션을 가지고 : 내 ConfigureAuth() Startup.Auth.cs은 다음과 같다? 미리 감사드립니다. 당신이 MVC (5)와 함께 신원을 사용하고 있는지

네이는 귀하의 의견을 통 더에서

+0

하나의 응용 프로그램 풀에 2 개의 다른 응용 프로그램을 넣는 것이 좋습니다. 응용 프로그램 풀은 서로 다른 수준의 보안이 필요한 응용 프로그램을 구분하기 위해 사용됩니다. – Lev

+0

Ar 회원을 ASP.NET 회원으로 사용하고 있습니까? 그렇다면 web.config에서 applicationName을 명시 적으로 (각 응용 프로그램마다 고유 한) 설정해야합니다. 그것은 <회원입니다. 태그 ...하지만 더 많은 정보를 제공하십시오. – Jeroen1984

+0

@ Jeroen1984 ASP.Net 멤버쉽 공급자를 사용하고 있습니다. 하지만 아직 내 Web.config에 태그와 관련된 아무 것도 지정하지 않았습니다. 포인터를 지정하는 방법에 대한 포인터를 줄 수 있습니까? 고맙습니다. – Nay

답변

1

은 아마 당신의 App_Start 폴더에 Startup.Auth.cs라는 파일이 sayd. 여기에는 인증이 구성된 부분 (OWIN) 시작 클래스의 두 번째 부분이 포함됩니다. 당신은 아마 고유 cookiedomain/cookiename으로, cookieauthentication를 구성해야이 클래스에서

:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       CookieDomain = ".My1stApp.com", 
       CookieName = "App1CookieName", 
       LoginPath = new PathString("/Account/Login"), 
       Provider = new CookieAuthenticationProvider 
       { 
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
         validateInterval: TimeSpan.FromMinutes(30), 
         regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
       } 
      }); 
+0

@ Jeroen1984를 게시 해 주셔서 감사합니다. 사실, 여전히 Identity 1.0을 사용하고 있으며 제안한 솔루션은 2.0을 참조합니다. 2.0으로 업그레이드하려고했지만 프로젝트에서 문제가 발생하여 1.0으로 되돌려졌습니다. Identity 1.0에서이 작업을 수행 할 방법이 없습니까? – Nay

+0

@Nay 1.0에서는 이것을 설정하는 방법을 모르겠지만 1.0에서 2.0으로 업그레이드하는 방법에 대한 기사가 있습니다 (2.0 알파라고 말하면서 2.0 릴리스에도 적용됩니다).기본적으로 너겟 패키지를 업데이트 한 다음 코드 첫 번째 마이 그 레이션을 실행하여 ID 2.0 모델의 변경 사항을 데이터베이스에 적용합니다. http://blogs.msdn.com/b/webdev/archive/2013/12/20/updating-asp-net-applications-from-asp-net-identity-1-0-to-2-0-0- alpha1.aspx – Jeroen1984

0

그것은 매우 간단합니다 ... 각 사이트를 자신의 응용 프로그램 풀을 제공합니다. 응용 프로그램 풀은 세션에서 데이터의 교차를 피하는 것과 같은 수준의 분리/보안을 제공합니다. 가장 좋은 점은 문제를 해결하는 데 10 초 밖에 걸리지 않는다는 것입니다. 이게 도움이 되길 바란다.

관련 문제