Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
1

Проверка прав пользователя к экшену

22.06.2017, 15:42. Показов 1785. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Из заголовка основной вопрос я думаю ясен))

У меня есть линк на экшен. Я хочу узнать может ли пользователь получить к нему доступ.

Проще говоря, мне по линку нужно получить Authorize аттрибут. Как это можно сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2017, 15:42
Ответы с готовыми решениями:

Проверка страны пользователя
Мне нужно ограничить аудиторию сайта посетителями из России. Кто-нибудь знает как проверить...

Проверка прав пользователя
Добрый день! Столкнулся с такой проблемкой. Есть такие таблицы users_access aID aTitle_ru ...

Проверка прав администратора пользователя
Столкнулся с необходимостью проверки прав администратора в приложении. Оказалось, что в ОС выше...

Проверка прав пользователя на запись файла
Как быстро проверить, что у пользователя есть доступ на запись файла? Конечно можно файл пытаться...

16
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
22.06.2017, 15:57 2
DarkOrk, всмысле "получить Authorize атрибут"? Что ещё за костыль вы удумали сотворить?
0
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
22.06.2017, 16:09  [ТС] 3
Usaga,
1. если вы поняли вопрос, то вместо бессмысленных комментариев можно было просто написать, что-то типа "Для получения этой информации нужно сделать...."
2. Что-то я немного смущён вашим ответом... Чем вас смутил атрибут Authorize ??
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
22.06.2017, 16:28 4
Цитата Сообщение от DarkOrk Посмотреть сообщение
Проще говоря, мне по линку нужно получить Authorize аттрибут. Как это можно сделать?
HTML5
1
@Ajax.ActionLink("Проверка", "GetAuthenticatedState", OnSuccess = "ShowAuthenticatedState" })
Javascript
1
2
3
function ShowAuthenticatedState(isAuthenticated) {
    alert(isAuthenticated);
}
C#
1
2
3
4
public bool GetAuthenticatedState()
{
    return User.Identity.IsAuthenticated;
}
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
22.06.2017, 16:32 5
DarkOrk, атрибут меня не смущает. Меня смущает явное его неправильное использование.

Если вы хотите в коде проверить можно ли пользователю показывать ссылку на экшен, то это нужно делать так же, как это делает ASP.NET MVC встречая данный атрибут - лезть в HttpContext.Current.User.Identity.
0
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
22.06.2017, 17:21  [ТС] 6
cyb0rg_01, Близко но нет.
Цитата Сообщение от DarkOrk Посмотреть сообщение
по линку
- это я имелл виду у меня на серверной части есть строка вот такого типа "/ControllerName/Action" (я точно знаю что эта строка линк к экшену), мне нужно проверить "а может ли юзер её использовать?" (достаточно ли праву него).
Usaga,
Цитата Сообщение от Usaga Посмотреть сообщение
лезть в HttpContext.Current.User.Identity.
, так, ок.
Но что мне тут нужно??
Как решить поставленную задачу имея IIdentity ?
Как вы бы это сделали? Интерфейс идентити у нас есть, строка которая представляет собой линку, тоже - есть. Как узнать может ли "этот идентити" использовать эту строку для перехода?
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
22.06.2017, 17:28 7
DarkOrk, нужно проверить свойство IsAuthenticated, назначение которого говорит само за себя. Соответственно, если там false, то пользователь неавторизован. Если вы точно знаете, что на экшене или контроллере висит атрибу авторизации, тто из этого можно сдлеать вывод ,что пользователю туда нельзя.
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
22.06.2017, 17:28 8
DarkOrk, Почему
C#
1
2
3
4
5
6
if(User.Identity.IsAuthenticated)
{
}
else
{
}
не устраивает? Наличие атрибута Authorize у метода действия известны, сравниваете и все. С ролями и прочим так же используете User.Identity.
0
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
22.06.2017, 17:33  [ТС] 9
Так или я чего-то не пойму, или это так не очевидно
Если "Это" не очевидно - извините.

Вы обсудили самый просто и банальный случай. С этим вы конечно правы, но меня интересуют расширенные опции. То есть, этот атрибут позволяет проверять "пользователя (имя)" и "роль".

Как мне получить роль и имена?
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
22.06.2017, 17:41 10
DarkOrk, User.Identity. там есть все о чем вы не догадываетесь.
0
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
22.06.2017, 18:17  [ТС] 11
Usaga, cyb0rg_01, блин, пипол! Да там записи о пользователе!!
Ок я могу вызвать метод User.IsInRole и узнать есть такая роль - ОК это работает!!

Вопрос в том, как узнать по линке (которая представлена строкой), какие нужны роли для использования данного котрола и экшена.

...да, да, дальше я вызову метод User.IsInRole и узнаю, а может ли текущий юзер использовать его, но как получить первичные данные???????
0
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
22.06.2017, 18:18 12
Логика проверка доступа к ресурсу никак не связана с аутентификацией.
Единственный способ узнать со стороны клиента - обратится к соответствующему апи , которое вернет информацию на основе той же логики авторизации.
0
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
22.06.2017, 18:24 13
точнее не совсем точно выразился , но факт аутентификации еще не означает что доступ будет разрешен.
0
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
22.06.2017, 18:27  [ТС] 14
sau, ну тогда, как это апи должно работать?

Пусть будет без параметров (для упрощения) и с возвратом списка строк (наши линки).

имеем набор типа

"/ControllerA/Home1"
"/ControllerA/Home2"
"/ControllerB/Home1"
"/ControllerB/Home2"

Как мне узнать роль текущего юзера - знаю.

Как мне узнать "необходимые роли для этих линков" (вот в это вопрос)

Добавлено через 2 минуты
Ну дальше будет всё просто - проверили то что есть и то что нужно и от этого вернули. Но вот как узнать "какие нужны"??

Так же добавлю, что на каждом представлении этой линки (то есть, на котроллерах и на экшенах) есть атрибут Authorize в котором описаны необходимые роли.

Какие мои дальнейшие действия?
0
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
22.06.2017, 18:35 15
Если Вас интересует как работает стандартный фильтр авторизации
- то вот https://github.com/ASP-NET-MVC... tribute.cs ,
но , ведь я могу определить и свой фильтр , с гораздо более серьезной логикой , и со стороны Вы ее не повторите , если не знаете как точно она работает и какие данные нужны для успешной проверки.
А вот было бы апи , вида /api/checkActionAccess(userData, action) , то оно могло бы точно сказать , можно будет зайти или нет.
Хотя это тоже не совсем корректный интерфейс , т.к тут нужен более общий подход,
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
23.06.2017, 03:37 16
DarkOrk, по урлу вы ничего не можете определить. Вам придётся где-то продублировать (составит список) всех урлов и требуемых прав доступа и проверять его самостоятельно. Делать это нужно на старте приложения, после настройки маршрутизации.
0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,045
Записей в блоге: 3
29.06.2017, 17:34 17
Можно влепить свои пять копеек?

У автора явно неправильный подход к задаче. Нужно не на View делать запрос "а имею ли я доступ к линке", а сам View формировать исходя из того, какому юзеру его отдаем. Т.е. проверка доступности к линке отдельных запросом тот еще костыль.
0
29.06.2017, 17:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2017, 17:34
Помогаю со студенческими работами здесь

Проверка прав пользователя при входе в БД
Доброго времени суток! Необходимо реализовать проверку прав пользователя при входе в БД. Есть 3...

Ограничение прав пользователя
Доброго времени суток! В cPanel на хостинге, создал нового пользователя для доступа к базе данный...

Определение прав пользоваТеля
Подскажите пожайлуста, как определить права у пользователя? Такая ситуация, есть таблица TABLE,...

Ограничения прав пользователя
Здравствуйте. Прошу помочь в таком вопросе Был приобретен новый ссддиск(120Гб) и установлен в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru