2017-12-19 5 views
1

나는 ASP.Net Core 2.0 쿠키 인증의 몇 가지 예를 연구했습니다. 그러나 쿠키를 통해 재 방문 사용자를 확인하는 코드는 여전히 표시되지 않습니다.쿠키 인증 : 돌아 오는 사용자에게 액세스하는 방법

저는 웹 개발자가 아닙니다. 결과적으로, 나는 내 질문이 어리석은 것처럼 보일 수도 있음을 깨달았다.

제가 알기로 브라우저는 클라이언트 요청에 따라 쿠키를 서버로 보냅니다. 그러나, 나는 단지 내가 배운 예제에서 이것에 대한 서버 로직을 보지 못했다. 따라서, 난 단지 사용자가 명시 적으로 전달있어 사용자 이름과 암호를 기반으로 처음으로 로깅을위한 논리를 참조

기대 :. 요청 때 쿠키가 존재하는 경우 명시 적으로 확인하기 위해 서버를 예상

웹 사이트의 색인 페이지 쿠키가 존재하는 경우, 이미 로그인있어 사용자를 해결하기 위해 몇 가지 논리를 보여야하는데 여기

  • Giraffe example

  • Tutorial example

    내 코드입니다 :.

    let loginHandler = 
        fun (next : HttpFunc) (ctx : HttpContext) -> 
    
         Tasks.Task.Run(fun _ -> StackOverflow.CachedTags.Instance() |> ignore) |> ignore 
    
         task { 
          let! data = ctx.BindJsonAsync<LogInRequest>() 
          let email = data.Email.ToLower() 
    
          if authenticate email data.Password 
           then match login email with 
             | Some provider -> 
              let claims = [ Claim(ClaimTypes.Name, email) ] 
              let identity = ClaimsIdentity(claims, authScheme) 
              let user  = ClaimsPrincipal(identity) 
    
              do!  ctx.SignInAsync(authScheme, user) 
              return! json provider next ctx 
    
             | None -> return! (setStatusCode 400 >=> json "Invalid login") next ctx 
           else return! (setStatusCode 400 >=> json "Invalid login") next ctx 
         } 
    

답변

2

나는 기린 예제를보고있다.

services.AddAuthentication(authScheme)services.AddCookie(cookieAuth)은 서비스 컬렉션에 다양한 서비스를 추가하여 사후에 사용할 수있게합니다.

app.UseAuthentication() 문은 middleware pipeline에 서비스를 추가합니다. 미들웨어 서비스는 모든 요청에서 실행되는 서비스입니다.

UseAuthentication에 의해 추가되는 서비스를 AuthenticationMiddleware이라고합니다. 여기서 볼 수 있듯이이 미들웨어는 AddAuthentication 번으로 전화하여 IAuthenticationSchemeProvider 번을 주입하여 실제로는 인증 작업을 수행하는 CookieAuthenticationhandler (AddCookie 전화로 제공)이라는 서비스에 의존합니다. 쿠키를 통해. 작업이 완료되면 로그인 한 사용자를 컨트롤러에서 참조 할 수있는 HttpContext으로 설정합니다.