4

실습을 위해 새 ASP.NET MVC 3.0 응용 프로그램을 만들려고합니다. 내 솔루션 (Practice.sln)는 4 층이있을 것이다 :서비스 공급자의 내부 멤버쉽 공급자

  • Pratice.Common (내 ViewModels에 대한 클래스 라이브러리)
  • Pratice.Data (EF에 대한 클래스 라이브러리)
  • Pratice.Service (클래스 라이브러리 비즈니스 로직)
  • Pratice.Web (asp.net의 MVC 3.0 프로젝트)

합시다 대한의 내가 강하게 내 Practice.Common 층에 정의 된 LoginModel에 입력 된 "로그인"이라는 전망을 가정합니다. LoginModel에는 2 개의 등록 정보 (사용자 이름 및 비밀번호)가 있습니다. 사용자가 양식을 제출하면, I는 다음과 같은 메소드를 호출 내 컨트롤러에서는

는 :

ValidateUser (
[HttpPost] 
public ActionResult Login(LoginModel model) 
{ 
    if(_service.ValidateUser(model)) 
    return null; 
} 

) 내 Pratice.Service 계층에 정의 된 방법이다 (제 LoginService.cs 파일 내) . 나는 기본적으로 내 서비스 레이어에 검증 프로세스를 위임하고있어

...


내 질문은 다음

내가/시도 멤버 자격 공급자의 이점을 사용하고 싶습니다 고려하고, 대부분의 (모든 것이 아닐지라도) 나의 논리가 내 서비스 계층에서 일어나고 있다고 생각한다면, 어떻게 내 서비스 계층으로 이동시킬 수 있습니까? (그건 경우에도 좋은 일이) 또한

... 나는 내장 한 내가 모든 테이블과 sprocs가 발생 사용하지 않는 때문에 ...

보너스 질문에 반대 내 자신의 멤버 자격 공급자를 만들 계획이었다 :

모든 로그인 및 계정 관리를 컨트롤러 내에서 직접 수행하고 나머지 모든 비즈니스 로직을 내 서비스 계층에 보관하는 것이 가장 좋습니다.

컨트롤러의 내부에서 직접 발생하는 로직의 "부품"과 서비스 레이어에서 발생하는 다른 "부품"이있는 것이 궁금합니다.

물론 누군가가 링크를 설명하거나 기사를 작성하면 감사하게 생각합니다.

감사

답변

3

좋아, 몇 가지 시련과 더 읽기, 나는 내 자신의 질문에 대답을 관리 한 후.

내 서비스 계층이 System.Web.Security에 대한 종속성을 갖기 때문에 멤버쉽 공급자를 내 서비스 계층 (내 경우에는)으로 이동하는 것이 의미가 없으므로 원하지 않습니다.

또한 나는 두 가지 개념을 혼란스럽게 느꼈다. FormsAuthentication 및 멤버십. 그들은 서로 협력하지만 회원 자격이 제공하는 모든 방법을 필요로하지는 않습니다. 따라서 사용자 지정 멤버십 공급자를 만들거나 내장 멤버를 사용할 필요가 없습니다.

내가해야 할 일은 내 서비스 레이어에서 Login() 메서드와 같은 메서드를 계속 생성 한 다음 FormsAuthenticationTicket을 수동으로 만들어 쿠키 안에 추가 한 다음 해당 쿠키를 쿠키 콜렉션 (컨트롤러 내).

부수적으로, HttpContext.User.Identity.IsAuthenticated가 TRUE를 반환하기 시작한 쿠키 컬렉션에 쿠키를 추가 한 경우에만 깨달았습니다.

달리 말하지 않는 한 컨트롤러 및 로직에 서비스 레이어의 일부 로직이있는 대신 서비스 레이어에 로그인 메커니즘 (및 유효성 검사)을 유지합니다.

+0

당신은 당신이 약간의 독서를했다고 말했습니까? –

관련 문제