2016-05-24 2 views
1

Я использую ASP.NET MVC шаблон 5 Идентичность и имеют в стандартном методе AccountController для регистрации пользователяСеть САШ MVC 5 Идентичность регистрация пользователя подтверждение

// POST: /Account/Register 
    [HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Register(RegisterViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // bind viewModel --> Model 
      var user = new ApplicationUser 
      { 
       UserName = model.Email, 
       Email = model.Email, 
       Fio = model.Fio, 
       Street = model.Street, 
       ... 
      }; 

      var result = await UserManager.CreateAsync(user, model.Password); 
      if (result.Succeeded) 
      { 
       await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); 

       // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 
       // Send an email with this link 
       string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); 
       var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); 
       ... 

И я использую callbackUrl для подтверждения регистрации пользователя.

Тогда я, как пользователь поставил этот адрес в браузере и доказать регистрации:

// GET: /Account/ConfirmEmail 
    [AllowAnonymous] 
    public async Task<ActionResult> ConfirmEmail(string userId, string code) 
    { 
     if (userId == null || code == null) 
     { 
      return View("Error"); 
     } 
     var result = await UserManager.ConfirmEmailAsync(userId, code); 
     return View(result.Succeeded ? "ConfirmEmail" : "Error"); 
    } 

Таким образом, работать, когда я ставлю оба метода (зарегистрировать и подтвердить) из одного экземпляра моего приложения. Но когда у меня есть два экземпляра и зарегистрируйтесь с первым и подтвердите со вторым, метод ConfirmEmailAsync возвращает неверный результат.

Я думаю, что UserManager должен иметь магазин для подключения к базе данных и может проверять электронную почту с другого экземпляра сайта. Это правильно?

ответ

1

Вам необходимо поставить machineKey в ваш web.config - иметь идентичный ключ во всех экземплярах приложения.

+1

Wow! Это сработало! Спасибо)) –

+0

@ АлександрШабунин, если он работает, пожалуйста, примите ответ – trailmax

Смежные вопросы