asp.net MVC пользователь для входа все еще направляется на страницу входа - PullRequest
1 голос
/ 09 июля 2019

Я новичок в ASP.NET MVC и хочу создать страницу входа в приложение ASP.NET MVC.У меня есть база данных на сервере и DLL, которая проверяет правильность имени пользователя и пароля.Моя проблема заключается в том, что после завершения входа приложение продолжает перенаправлять на страницу входа, а не на домашнюю страницу, и я не знаю, что мне делать.

Это мой код:

страница входа

// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }
    string url = Request.Url.Scheme + "://" + Request.Url.Authority +
                     Request.ApplicationPath.TrimEnd('/');
    Services.UserLogin login = new Services.UserLogin(url, model.UserName, model.Password);
    bool result = login.IsValidLogin();
    if (result)
    {
       return Redirect(url + "/" + "Home/Index");
    }
    else
    {
       return View(model);
    }
}

Предположим, что это мой login.IsValidLogin() метод, и он всегда возвращает true:

bool IsValidLogin()
{
    return true;
}

, поэтому я хочу, чтобы login.IsValidLogin() было true для перенаправления на домашний контроллер.

Мой домашний контроллер

[Authorize]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

я изменяю это в web.config

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>

Я не знаю, следующий шаг.Должен ли я создать флаг, что у меня есть действительный пользователь или нет, я понятия не имею.

Должен ли я иметь дело с промежуточным программным обеспечением OWIN?

1 Ответ

0 голосов
/ 09 июля 2019

Вам необходимо установить файлы cookie для аутентификации после подтверждения информации для входа в систему:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
    if (!ModelState.IsValid)
    {
       return View(model);
    }
    string url = Request.Url.Scheme + "://" + Request.Url.Authority +
                     Request.ApplicationPath.TrimEnd('/');
    Services.UserLogin login = new Services.UserLogin(url, model.UserName, model.Password);
    bool result = login.IsValidLogin();
    if (result)
    {
       // Set authentification cookie
       FormsAuthentication.SetAuthCookie(model.UserName, false);
       return Redirect(url + "/" + "Home/Index");
    }
    else
    {
       return View(model);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...