return RedirectToAction не работает

введите здесь описание изображения

Я уже просто проверяю имя и передаю (= правда)

При возврате RedirectToAction("Index", "Home"); ---> не работает

Я не знаю, какие ошибки! Не показывать ошибки

Пожалуйста, помогите .. Большое спасибо.


person JH Ong    schedule 19.02.2020    source источник
comment
Вы поставили точку останова на эту строку? эта строка выглядит нормально для меня, я думаю, что ваш код никогда не вводит этот блок if.   -  person bthn    schedule 19.02.2020
comment
@Rahul localhost:49972/user/~/Home/Index показать... правильный путь: localhost:49972/Home/Index   -  person JH Ong    schedule 19.02.2020
comment
@JHOng поставь точку отладчика и проверь в каком месте выдает ошибку   -  person Rahul_Patil    schedule 19.02.2020
comment
Есть ли у вас какие-либо атрибуты или средства безопасности, такие как [Autorize] в контроллере Home или в действии Index?   -  person Bonomi    schedule 19.02.2020
comment
попробуйте добавить [AllowAnonymous] в перенаправленное действие, чтобы убедиться, что оно работает или нет.   -  person Virender Thakur    schedule 19.02.2020


Ответы (2)


Он работает, вероятно, работает.

Однако у вас, скорее всего, активирована проверка подлинности с помощью файлов cookie или аналогичная, что означает, что MVC перенаправит пользователя обратно на страницу входа, поскольку файл cookie для проверки подлинности не может быть найден.

Прежде чем возвращать перенаправление, вы должны создать файл cookie.

Как вы это сделаете, зависит от того, какую версию MVC вы используете.

Вот для MVC5: Как установить файл cookie аутентификации в asp.net 5

Добавьте следующее перед return RedirectToAction("Index", "Home");

   // Which claims depends on what kind of information you want to store about the user
   var claims = new[] { new Claim(ClaimTypes.Name, name) };
    var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
    Context.Authentication.SignIn(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity));

Пример ASP.NET Core MVC доступен здесь: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-3.1

person jgauffin    schedule 19.02.2020

Попробуйте этот способ:

Логинконтроллер.cs


using System.Data.Odbc;
using System.Web.Configuration;

        public ActionResult LoginReadData()
        {
            string query = "Select * from login where name=@name and password=@password";

            //using (OdbcConnection connection = new OdbcConnection(ConfigurationManager.ConnectionStrings["cnn"].ConnectionString))
                OR
            using (OdbcConnection connection = new OdbcConnection("Your Connection String")) //here you need to add connection 
            {
                OdbcCommand command = new OdbcCommand(query, connection);

                connection.Open();

                OdbcDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    string name = reader[0].ToString();
                    string password = reader[1].ToString();

                    if (name != null && password != null)
                    {
                        return RedirectToAction("Index", "Home");
                    }
                    else
                    {
                        return View("Create", "Registration");
                    }
                }
                reader.Close();
            }
            return View();
        }

person Rahul_Patil    schedule 19.02.2020