다른 프로그래머가 시작한 프로젝트를 마무리 중입니다. 전체 아키텍처를 변경할 수는 없지만 일부는 덮어 쓰려고합니다. 즉, 권한 부여 및 현재 사용자 세션을 저장하는 방법. 프로젝트는 soap-services를 통해 서버와 통신하는 클라이언트를 나타냅니다. 서버에는 보안 서비스 (Security-Services)와 A 서비스, B 서비스와 같은 여러 서비스가 있습니다. 보안 서비스는 초기화 된 다른 서비스와 함께 인증 및 세션 키를 제공합니다. 프로젝트는 서비스와 상호 작용하는 방법을 설명하는 singletone-Class로 구현 된 사용자 모델의 머리 인 ASP.NET MVC3으로 작성되었습니다. 인증 작동 방식 - 보안 서비스에서 작동하는 재정의 된 ValidateUser 메소드가있는 CustomMembershipProvider가 있습니다. 성공적인 인증은 asp.net에서 사용자 등록을 발생하는 경우 - FormsService.SignIn (model.UserName, false)를 다음 initizalied 사용자 클래스 :ASP.NET MVC 프로젝트 아키텍처 문제 - 인증 및 세션
class SiteUser
{
public static SiteUser Current
{
get
{
if (HttpContext.Current.Session.IsNewSession & &! HttpContext.Current.User.Identity.IsAuthenticated)
{
throw new UserAutorizationExeption() {Reason = AuthExceptionReason.NewSession};
}
if (HttpContext.Current.Session [sessionKey] == null)
{
FormsAuthentication.SignOut();
throw new UserAutorizationExeption() {Reason = AuthExceptionReason.ServerSessionExpired};
}
return HttpContext.Current.Session [sessionKey] as W1User;
}
set
{
if (HttpContext.Current.Session! = null)
{
HttpContext.Current.Session [sessionKey] = value;
}
}
}
public SiteUser()
{
}
public static SiteUser Create()
{
SiteUser.Current = new SiteUser();
return SiteUser.Current;
}
// Web-services methods go here
}
가장 큰 문제는 현재 세션이 메모리에 저장되어 있습니다 : 웹 .config :
<sessionState mode="InProc" timeout="20" />
Set SqlServer 모드는 SiteUser serialize가 어려울 수 있으므로 문제가됩니다. 이 문제를 어떻게 해결할 수 있습니까? 인증에 문제가 있습니다 - 서비스 세션에서 Asp.Net 동기화 세션을 올바르게 수행하는 방법은 무엇입니까? 영어로 불편을 끼쳐 드려 죄송합니다. 필요한 경우 질문을하십시오. 고맙습니다.
세션에 대한 조언을 주셔서 감사합니다. 인증에 대해 무엇을 알 수 있습니까? 나는 그것이 지금 실현되는 방법을 좋아하지 않습니다. - 사용자가 그것을 얻으 려 할 때만 권한을 부여받지 못한다는 것을 알고 있습니다. 이것으로 서비스에 오류가 발생하면 즉시 알 수 없음을 알고 있습니다. – Boo
서비스 계층 또는 ASP NET MVC에서 권한 부여가 가능합니다. 그것이 SOA라면 서비스 계층에 있어야합니다. 사용자 세션 키를 사용자에게 매핑하고 액세스 권한이 있는지 확인합니다. – Aliostad
당신은 매핑 세션 키에 대해 읽을 수있는 몇 가지 링크를 줄 수 있습니까? – Boo