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

Подскажите как правильно сделать:

у меня на главной стр. 2-е ссылки:
1-ая для обычных пользователей
2-ая для администратора

для этих страниц у меня 3 контроллера:

1-ый для страницы пользователя - FriendsController

2-ой для страницы администратора - AdminController

3-ий - контроллер для авторизации и регистрации - AccountController, содержащий:
метод Login GET
метод Login POST - перенаправляет после успешной авторизации
метод Register GET
метод Register POST

Из контроллера AccountController метода Login POST меня может перенаправить только на 1-у станицу сейчас это страница пользователя.

Мне нужно чтобы, если выбирали ссылку страницы администратора, то перенаправляло не на страницу пользователя, а на страницу администратора.

Как это правильно сделать?
Определить в AdminController отдельно методы Login GET и Login POST для авторизации на эту страницу и перенаправлять при клике на неё в эти методы?

Или есть более правильный метод?
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060291
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir
Или есть более правильный метод?
Обычно урл, на который нужно вернуться после аутентификации, передается на страницу логина как параметр запроса (?backurl=....)

Модератор: Тема перенесена из форума "WCF, Web Services, Remoting".
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060320
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Vlad__i__mir
Или есть более правильный метод?
Обычно урл, на который нужно вернуться после аутентификации, передается на страницу логина как параметр запроса (?backurl=....)

Модератор: Тема перенесена из форума "WCF, Web Services, Remoting".


А как этот url передать, если страница для входа для всех url-ов одна и та же?
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060527
Kusanagi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad__i__mir

то перенаправляло не на страницу пользователя, а на страницу администратора.

Vlad__i__mir

Или есть более правильный метод?

Есть логика, которая вам требуется. Параметр, который используется для редиректа, называется returnUrl.
Посмотрите в коде, где он используется и устанавливайте в нужное значение, в зависимости от роли только что вошедшего пользователя.
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060528
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir
у меня на главной стр. 2-е ссылки:
вот эту ссылку и надо передать, одну из двух
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060577
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Vlad__i__mir
у меня на главной стр. 2-е ссылки:
вот эту ссылку и надо передать, одну из двух

Если я вас правильно понял, то мне нужно на странице авторизации прописать два скрытых поля с 2-мя url (<input hidden asp-for="ReturnUrl" type="text" value="" />). Как тогда контроллеру авторизации дать знать какой url он должен использовать?
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060599
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда на странице авторизации окажется два поля, если на эту страницу передается только один url, на который будет переход после аутентификации?
Количество страниц, на которые может осуществляться переход вообще не волнует страницу авторизации. Ей дали url, она на него отправила, все.
Просто набери в поиске MVC ReturnUrl - целый вагон примеров
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060615
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если точка входа одна, то после аутентификации юзера вы должны ему назначать соответствующую роль (админ/обычный юзер) и уже авторизовывать с нужными правами на доступ , потом сразу редиректить в нужный раздел сайта.

я к тому, что у вас должен быть прописан признак у логина, является ли этот юзер обычным или админом.
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060619
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
если точка входа одна, то после аутентификации юзера вы должны ему назначать соответствующую роль (админ/обычный юзер) и уже авторизовывать с нужными правами на доступ , потом сразу редиректить в нужный раздел сайта.

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


Роли у меня есть, только админ может заходить на обе страницы
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060640
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Откуда на странице авторизации окажется два поля, если на эту страницу передается только один url, на который будет переход после аутентификации?

гооглил, нашел вот такой пример https://metanit.com/sharp/aspnet5/16.4.php ,

сделал по аналогии, url доходит до метода
Код: c#
1.
2.
3.
4.
5.
[HttpGet]
        public IActionResult Login(string returnUrl = null)
        {
            return View(new LoginModel { ReturnUrl = returnUrl });
        }



но в метод авторизации он уже не попадает, да и как он туда может попасть, если там новый post-запрос:
Код: 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.
[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                User user = await db_context.User
                    .Include(u => u.Role)
                    .FirstOrDefaultAsync(u => u.UserName == model.UserName && u.Password == model.Password);
                if (user != null)
                {
                    await Authenticate(user); // аутентификация

                    // проверяем, принадлежит ли URL приложению
                    if (!string.IsNullOrEmpty(model.ReturnUrl) && Url.IsLocalUrl(model.ReturnUrl))
                    {
                        return Redirect(model.ReturnUrl);
                    }
                    else
                    {
                        return RedirectToAction("Index", "Friends");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Неправильный логин и (или) пароль");
                }
            }
            return View(model);
        }



Страница логирования:
Код: 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.
<div class="container">
    <div class="row">
        <div class="col-md-offset-3 col-md-6"></div>      
        <div class="col-sm-4">
            <span class="heading" style="align-items:center">АВТОРИЗАЦИЯ</span>
            <form class="form-horizontal" asp-controller="Account" asp-action="Login" method="post">
                <div class="form-group">
                    <label class="control-label">Имя пользователя</label>
                    <input asp-for="UserName" class="form-control" type="email" id="inputEmail" placeholder="E-mail" />
                    <span asp-validation-for="UserName"></span>
                    <i class="fa fa-user"></i>
                </div>
                <div class="form-group">
                    <label class="control-label">Пароль</label>
                    <input asp-for="Password" class="form-control" type="password" id="inputPassword" placeholder="Password" />
                    <span asp-validation-for="Password"></span>
                    <i class="fa fa-lock"></i>
                    <a href="#" class="fa fa-question-circle"></a>
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-default" value="Войти"/>
                </div>
                <div class="form-group">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-action="Register" asp-controller="Account">
                            <font size="2" color="blue" face="Arial">Зарегистрироваться</font>
                        </a>
                    </li>
                </div>
            </form>
        </div>
        <div class="col-sm-4"></div>
    </div>
</div>
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060855
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir
Страница логирования:
и как у тебя returnUrl должен попасть в LoginModel если его нет в разметке?
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060886
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
и как у тебя returnUrl должен попасть в LoginModel если его нет в разметке?


Вы же сами говорили:
Shocker.Pro
Откуда на странице авторизации окажется два поля, если на эту страницу передается только один url, на который будет переход после аутентификации?
Количество страниц, на которые может осуществляться переход вообще не волнует страницу авторизации. Ей дали url, она на него отправила, все.
Просто набери в поиске MVC ReturnUrl - целый вагон примеров


LoginModel строится по странице авторизации.

Можете тогда конкретно сказать, где url-ы нужно прописывать?
...
Рейтинг: 0 / 0
Настройка маршрутизации при авторизации пользователя
    #40060903
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Vlad__i__mir
Страница логирования:
и как у тебя returnUrl должен попасть в LoginModel если его нет в разметке?


Понял, нужно было прописать:
Код: html
1.
asp-route-returnUrl="@Model.ReturnUrl"



Спасибо
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Настройка маршрутизации при авторизации пользователя
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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