2016-06-11 2 views
1

Я пытаюсь войти в систему и выйти из системы, используя AJAX в ASP.Net MVC. Когда я регистрирую и выхожу из системы, он работает. После входа в систему он перенаправляет меня на мою домашнюю страницу (это правильно), но не показывает ссылку «Приветствие по электронной почте и выход». Что мне не хватает в коде?login/logout с AJAX

-регулятора:

public ActionResult Index() 
{ 
    return View(); 
} 

[HttpGet] 
public ActionResult LogIn() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult LogIn(Models.Registration userr) 
{ 
    //if (ModelState.IsValid) 
    //{ 
    if (IsValid(userr.Email, userr.Password)) 
    { 
     FormsAuthentication.SetAuthCookie(userr.Email, false); 
     return RedirectToAction("Index", "Home"); 
    } 
    else 
    { 
     ModelState.AddModelError("", "Login details are wrong."); 
    } 
    return View(userr); 
} 

[HttpGet] 
public ActionResult Register() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult Register(Models.Registration user) 
{ 
    try 
    { 
     if (ModelState.IsValid) 
     { 
      using (var db = new ApartManagementSystem.DAL.ApartContext()) 
      { 
      var crypto = new SimpleCrypto.PBKDF2(); 
      var encrypPass = crypto.Compute(user.Password); 
      var newUser = db.Registrations.Create(); 
      newUser.Email = user.Email; 
      newUser.Password = encrypPass; 
      newUser.PasswordSalt = crypto.Salt; 
      newUser.FirstName = user.FirstName; 
      newUser.LastName = user.LastName; 
      newUser.UserType = "User"; 
      newUser.CreatedDate = DateTime.Now; 
      newUser.IsActive = true; 
      newUser.IPAddress = "642 White Hague Avenue"; 
      db.Registrations.Add(newUser); 
      db.SaveChanges(); 
      return RedirectToAction("Index", "Home"); 
      } 
     } 
     else 
     { 
      ModelState.AddModelError("", "Data is not correct"); 
     } 
    } 
    catch (DbEntityValidationException e) 
    { 
     foreach (var eve in e.EntityValidationErrors) 
     { 
      Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", 
      eve.Entry.Entity.GetType().Name, eve.Entry.State); 
      foreach (var ve in eve.ValidationErrors) 
      { 
       Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", 
         ve.PropertyName, ve.ErrorMessage); 
      } 
     } 
     throw; 
    } 
    return View(); 
} 



@if (Request.IsAuthenticated) 
{ 
    <strong>@Html.Encode(User.Identity.Name)</strong> 
    @Html.ActionLink("Log Out", "LogOut", "User") 
} 
else 
{ 
    @Html.ActionLink("Register", "Register", "User") 
    <span> | </span> 
    @Html.ActionLink("Log In", "LogIn", "User") 
} 

ответ

0

Может быть статус билета аутентификации не сохраняет в контексте. Пожалуйста, убедитесь, что у вас есть что-то подобное в вашем конфигурационном файле

<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH"></forms> 
    </authentication> 
</system.web> 

и этот блок должен быть удален, если он существует:

<system.webServer> 
    <modules> 
    <remove name="FormsAuthentication" /> <----**** 
    </modules> 
</system.webServer> 

EDIT: здесь, где ваш файл WebConfig является местонахождение enter image description here Вы можете также проверьте эту ссылку о конфигурации authentication Element (ASP.NET Settings Schema)

+0

Shoul Я добавляю web.config? Я пытался и не смог добавить. Он дает ошибку: Xml documnent не может содержать элементы уровня корня – yiad

+0

Я обновляю свой ответ. В проекте Asp.net mvc уже есть файл в корневой папке с именем web.config. Вы должны открыть и отредактировать его. Нет необходимости создавать новый файл конфигурации. – Tchaps