2011-01-22 2 views
3

현재 저장소, uow, 서비스, ioc, ef4 및 mvc3과 같은 새로운 기술과 패턴을 연습하기 위해 n 계층 웹 응용 프로그램을 구축하고 있습니다.n 계층 웹 응용 프로그램 전체에서 .NET 멤버쉽 공급자 사용

많은 머리카락을 당긴 후 저장소를 사용하여 내 서비스 계층을 통해 내 엔티티를 저장하고 있습니다.

이제 서비스 계층에 필요한 메소드를 정의하기 시작했습니다. 인증 구현을 시작하기에 좋은 시점입니다. 일반적으로 나는 회원 인증 공급자를 시도하기 위해 친구가 들었지만 내 인증 코드를 게시 할 것입니다.

이제 분명히 mvc3 웹 응용 프로그램에서 이것을 사용할 것입니다.하지만 내 서비스 계층에서도 사용할 수 있을지 궁금합니다. 누구든지 어떤 기사 나 블로그 게시물을 가르쳐 줄 수 있습니까?

NB. 죄송 합니다만, 분명히 말하면 사과드립니다. 저는 제 서비스 계층을 언급 할 때 WCF를 의미하지는 않습니다. 이것들은 서비스 레이어 패턴 - http://martinfowler.com/eaaCatalog/serviceLayer.html을 존중하는 클래스들입니다. 그런데, 나중에 WCF 서비스를 통해이 서비스 계층을 노출하고 싶을 수 있습니다.

나는 지금 두시간 동안 인터넷 검색을하고 있었고 아무 것도 생각 해 내지 못했다!

정말 도움이됩니다.

답변

1

이것은 Scott Mitchell의 18 part series입니다.

asp.net의 인증, 권한 부여 및 멤버쉽 공급자와 관련된 모든 기능에 대한 매우 자세한 설명입니다. 나는 동일한 저자에게서 이것에 더 나은 근원을 결코 찾아 내지 않았다.

당신은 어떤 특별한 변경없이이 도움이

희망을 이미 EF4 오늘처럼 저장소 패턴의 사용 throgh 구현을 숨길 수 있습니다!

+0

그런 링크를 가져 주셔서 감사합니다, 그러나 당신은 내 저장소 내에서 인증을 구현할 수 있다고. 어쩌면 내가 틀렸지 만 이것이 인증을위한 올바른 위치처럼 보이지는 않을 것입니다. SoC 측면에서 생각해 보면 저장소는 엔티티에 대한 CRUD 작업 만 담당해야합니다. 인증을위한 가장 좋은 장소는 서비스 레이어 (즉, 애플리케이션 로직이있는 곳)이고 MVC 웹 앱에서 서비스 레이어로 현재 사용자와 권한을 전달하는 방법을 생각하고 있습니다. 나는 그것이 의미가 있기를 바랍니다. 나는 지금 링크를 읽기 시작할 것이다, 고마워! – jameskind

+0

네, 맞습니다. 그러나 언제나'Membership.GetUser (HttpContext.Current.User.Identity.Name)'를 사용하여 현재 ID 이름을 기반으로 사용자를 얻을 수 있습니다. ;) – Lorenzo

1

사용자 이름, 원격 IP 주소 등을 보유하는 "SecurityContext"클래스를 만드는 것이 한 가지 방법입니다. 그런 다음 WCF 서비스에 대한 프록시 클래스 역할을하는 Agent 클래스를 만듭니다. 에이전트 클래스에서 정적 클래스로 보안 컨텍스트를 만들 수 있습니다. 그런 다음이 보안 컨텍스트를 보안이 필요한 모든 서비스 메서드의 다른 계층에 전달할 수 있습니다. 이 방법은 프런트 엔드에서 인증을 수행하고 도메인/비즈니스 로직 계층에서 감사 등을 수행 할 수있을 정도로 유연합니다.