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

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

Для этого создал форму авторизации:
Код: 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
02.04.2021, 11:48
    #40059044
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переадресация запроса с одного контроллера в другой в C# asp.net mvc Core
Vlad__i__mir,
ошибка найдена - не верное имя контроллера, нужно так
Код: c#
1.
 return RedirectToAction("Index", "Friends", new { login = userFind.Login });



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

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

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


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

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


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


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


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


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