powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
7 сообщений из 7, страница 1 из 1
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
    #40058943
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Делаю простейшею авторизацию - просто по поиску логина и пароля в БД. Если логин и пароль найден, то должна загрузиться страница с объектами принадлежащими данному пользователю.

Для этого создал форму авторизации:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
@model DataCollector.Models.User
@{
    ViewData["Title"] = "Home Page";
}

<div class="container">
    <div class="row">
        <div class="col-sm-4"></div>
        <div class="col-sm-4">
            <form class="form-horizontal" asp-action="Index">
                <div class="form-group">
                    <label class="control-label">Имя пользователя</label>
                    <input asp-for="Login" class="form-control" type="text" />
                </div>
                <div class="form-group">
                    <label class="control-label">Пароль</label>
                    <input asp-for="Password" class="form-control" type="password" />
                </div>
                <div class="form-group">
                    <input type="submit" value="Войти" />
                </div>
            </form>
        </div>
        <div class="col-sm-4"></div>
    </div>
</div>

@{
    if (TempData["msg"] != null)
    {
        <script>
            alert('@TempData["msg"]')
        </script>
    }
}


Для обработки запроса на авторизацию с данной странице создал контроллер, который, если нашел нужного пользователя должен перенаправлять в контроллер "FriendsController", который должен загрузить список друзей пользователя.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
public class HomeController : Controller
    {
        private readonly Db_usersContext _context;

        public HomeController(Db_usersContext context, ILogger<HomeController> logger)
        {
            _context = context;
        }

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

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Index([Bind("Login, Password")] User user)
        {
            var db_usersContext = _context.User.Where(u => u.Login.Equals(user.Login) & u.Password.Equals(user.Password));

            User userFind = null;
            if (db_usersContext.Count() > 0)
            {
                userFind = db_usersContext.First();
                return RedirectToAction("Index", "FriendsController", new { login = userFind.Login });
            }
            else
            {
                TempData["msg"] = "Данный пользователь был добавлен ранее";
                return NotFound();
            }               
        }

    }


При перенаправлении он также должен передать логин пользователя, но как это правильно сделать честно не знаю.

Контроллер в который идет перенаправление:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class FriendsController : Controller
    {
        private readonly Db_usersContext _context;

        public FriendsController(Db_usersContext context)
        {
            _context = context;
        }

        // GET: Friends
        public async Task<IActionResult> Index(string login)
        {
            var db_usersContext = _context.Friend.Include(f => f.User).Where(f => f.User.Login.Equals(login));
            return View(await db_usersContext.ToListAsync());
        }
}


Это не работает он перенаправляет на страницу "http://localhost:64536/FriendsController?login=vldmr", которая не находится.

Подскажите как правильно сделать переадресацию?
...
Рейтинг: 0 / 0
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
    #40059044
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad__i__mir,
ошибка найдена - не верное имя контроллера, нужно так
Код: c#
1.
 return RedirectToAction("Index", "Friends", new { login = userFind.Login });



Подскажите как сделать, чтобы параметры передавались не в адресной строке, а POST-запросом или другим способом, но чтобы в адресной строке не "святилось"?
...
Рейтинг: 0 / 0
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
    #40059228
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,

Нельзя делать редирект методом POST.
Авторизация в данном случая должна сохраниться в куки, зачем вы передаёте логин дальше?
...
Рейтинг: 0 / 0
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
    #40059924
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Vlad__i__mir,

Нельзя делать редирект методом POST.
Авторизация в данном случая должна сохраниться в куки, зачем вы передаёте логин дальше?


Чтобы подгрузить данные конкретно этого пользователя
...
Рейтинг: 0 / 0
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
    #40059933
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt, а еще возможно вы знаете

(подозрительная ссылка!) https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1334975&msg=22304649
...
Рейтинг: 0 / 0
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
    #40060014
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir
Чтобы подгрузить данные конкретно этого пользователя


Ну тогда редиректите на GET метод
...
Рейтинг: 0 / 0
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
    #40060042
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Vlad__i__mir
Чтобы подгрузить данные конкретно этого пользователя


Ну тогда редиректите на GET метод


Нашел способ через
Код: c#
1.
2.
TempData["UserName"] = loginViewModel.UserName;
return Redirect(loginViewModel.ReturnUrl);
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]