2017-12-06 10 views
1

사용자가 특정 시점까지 로그인하지 않고 URL에 액세스하도록 허용하는 요구 사항이 있습니다. 예 :사용자가 작업 사이에 로그인/로그인 허용

온라인 예약/서비스. 그들은 서비스를 선택할 수 있으며, 뷰 모델을 채운 다음 확인보기를 가져옵니다. OnlineBooking/Confirm 사용자가 이메일 주소 등을 추가 할 수 있도록 허용합니다. 그러면 ViewModel이 생성됩니다.

제 질문은, 존재한다면 사용자를 어떻게 확인할 수 있습니까? 로그인보기 (계정 컨트롤러 - 로그인 작업)로 리디렉션하고 로그인 할 수있게 한 다음이 작업에서 뷰 모델을 잃지 않고이 작업으로 다시 리디렉션 하시겠습니까? 이것은 가능하지 않을 수도 있습니다. 어떻게하면되지 않을까요? 조언 해 주셔서 감사합니다.

예 :

것이 가장 좋은 방법입니다 확실하지 경우
 public async Task<IActionResult> Confirm(BookingViewModel bookingViewModel) 
    { 
     try 
     { 
      var matchedUser = await _userManager.FindByEmailAsync(bookingViewModel.Email); 
      if (matchedUser == null) //User does not have an existing account, so register them. 
      { 
       //This is fine 
      } 
      else 
      { 
       //Need to redirect to login, then back to here without losing the viewmodel 
      } 
    } 
+0

[AllowAnonymous] (http://www.davidhayden.me/blog/asp.net-mvc-4-allowanonymous-attribute-and- authorize-attribute) 속성은 그 목적을 위해 설계되었습니다. –

답변

1

내 질문은 그것이 않는 경우 나, 사용자가 존재 확인 할 수있는 방법이다. 로그인보기로 리디렉션하고 (계정 컨트롤러 - 로그인 액션), 사용자가 로그인 할 수있게 한 다음이 작업에서 뷰 모델을 잃지 않고이 작업으로 다시 리디렉션합니다.

개인적인 취향으로 사용자를 리디렉션하지 않을 수도 있습니다. 로그인해야하는 경우 로그인하라는 대화 상자가 나타납니다. 사용자가 로그인하면 (ajax) 버튼을 계속 사용 가능하게 설정하십시오.

+0

이것은 더 사용하기 쉬운 것으로 들립니다. 내가 볼 수있는 모범이 있니? –

+0

나는 어떤 식 으로든 관계가 없지만, http://www.southwest.com을 확인하고 항공편을 검색하면 오른쪽에 로그인이 표시되며, 언제든지 과정에서 임의로 로그인 할 수 있습니다. 많은 많은 웹 사이트에서이 작업을 수행합니다. –

+0

고마워, 그래, 나는 그것이 더 나은 과정이라는 것에 동의한다. 이 동작에 뷰 모델을 유지하면서이 기능을 구현하는 데 사용할 수있는 예제를 알고 계십니까? –

0

,하지만 당신은 로그인 페이지로 리디렉션하기 전에 세션에서보기 모델을 저장 어떻습니까? 그런 다음 확인 작업이 시작될 때 해당 세션 변수가 있는지 확인하십시오. 과 같이

Session["MyViewModel"] = viewModel; 

및 검색 :

세션 변수는 다음과 같이 설정할 수 있습니다

MyViewModel viewModel = (MyViewModel)Session["MyViewModel"] 
+0

개체를 직렬화 할 수있는 한이를 수행하는 한 가지 방법입니다. –