У меня есть следующая проблема с использованием asp.net MVC: когда администратор обновляет запрос пользователя, он получит сообщение электронной почты, в котором говорится, что запрос был обновить и в этом письме появится ссылка на страницу http://www.domain.com/request
.ASP.NET MVC Перенаправить на целевую страницу или перенаправить на предыдущую страницу после входа в систему
Для доступа к этой странице пользователь должен войти в систему, чтобы ссылка перенаправилась на страницу входа. После входа пользователь перенаправляется на http://www.domain.com/welcome
, , как я могу сделать, чтобы перенаправить на адрес, отправленный по электронной почте после входа?
[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl, bool createPersistentCookie)
{
// Check if the Model is valid or not
if (ModelState.IsValid)
{
using (GNEntities entities = new GNEntities())
{
string username = model.Email;
string password = model.Password;
// Now if our password was enctypted or hashed we would have done the
// same operation on the user entered password here, But for now
// since the password is in plain text lets just authenticate directly
bool userValid = entities.Employee.Any(user => user.Email == username && user.Password == password && user.IsActive ==true);
// User found in the database
if (userValid)
{
FormsAuthentication.SetAuthCookie(username, createPersistentCookie); //false:not persistent cookie
Employee e = (Employee)entities.Employee.FirstOrDefault(user => user.Email == username);
if (e.Roles.Id==1 || e.RoleId == 3) // 3 = commercial
{
return RedirectToAction("Index", "AdminIndex", new { Area = "AdminArea" });
}
else if (e.Roles.Id == 2 || e.Roles.Id ==4)
{
int countryId = e.CountryId;
return RedirectToAction("Index", "Calendar", new { year = DateTime.Now.Year, countryId, Area = "EmpArea" });//with paramenters RedirectToAction("Index", new { id = currentcoupon.Companyid.id, Area="Admin" });
}
}
else
{
ModelState.AddModelError("", "The email or password provided is incorrect or your account has been disabled.");
}
}
}
// If we got this far, something failed, redisplay form
return View(model);
Я попытался это, но не работает:
if (returnUrl == null)
{
int countryId = e.CountryId;
return RedirectToAction("Index", "Calendar", new { year = DateTime.Now.Year, countryId, Area = "EmpArea" });
}
else
{
return RedirectToAction(returnUrl, new {Area = "EmpArea"});
}
В результате до сих пор не очень хорошо: Это гиперссылка перед входом domain.net/Login/Login?ReturnUrl=%2fEmpArea%2fTimesheet
и после входа в систему он генерирует этот адрес domain.net/EmpArea/Login/EmpArea/Timesheet
Он поддерживает зону входа. Я не знаю почему.
Может быть, показать нам свой код входа в систему? – DavidG
В вашем логинном коде после входа вы перенаправляете пользователя в AdminIndex или Calendar. Вместо этого попробуйте использовать параметр returnUrl. – DavidG
Привет, Дэвид, я добавил RedirectToAction (returnURL, new = {Area = "EmpArea"}), но у меня все еще есть и ошибка. Это url перед login domain.net/Login/Login?ReturnUrl=%2fEmpArea%2fTimesheet и после входа в систему он генерирует этот url domain.net/EmpArea/Login/EmpArea/Timesheet – Natalia