20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
|
|
1 | |
Проверка прав пользователя к экшену22.06.2017, 15:42. Показов 1785. Ответов 16
Метки нет (Все метки)
Здравствуйте.
Из заголовка основной вопрос я думаю ясен)) У меня есть линк на экшен. Я хочу узнать может ли пользователь получить к нему доступ. Проще говоря, мне по линку нужно получить Authorize аттрибут. Как это можно сделать?
0
|
22.06.2017, 15:42 | |
Ответы с готовыми решениями:
16
Проверка страны пользователя Проверка прав пользователя Проверка прав администратора пользователя Проверка прав пользователя на запись файла |
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 | |||||||||||||||
0
|
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, Близко но нет.
- это я имелл виду у меня на серверной части есть строка вот такого типа "/ControllerName/Action" (я точно знаю что эта строка линк к экшену), мне нужно проверить "а может ли юзер её использовать?" (достаточно ли праву него). Usaga, , так, ок. Но что мне тут нужно?? Как решить поставленную задачу имея IIdentity ? Как вы бы это сделали? Интерфейс идентити у нас есть, строка которая представляет собой линку, тоже - есть. Как узнать может ли "этот идентити" использовать эту строку для перехода?
0
|
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, Почему
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
|
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
|
|
23.06.2017, 03:37 | 16 |
DarkOrk, по урлу вы ничего не можете определить. Вам придётся где-то продублировать (составит список) всех урлов и требуемых прав доступа и проверять его самостоятельно. Делать это нужно на старте приложения, после настройки маршрутизации.
0
|
29.06.2017, 17:34 | 17 |
Можно влепить свои пять копеек?
У автора явно неправильный подход к задаче. Нужно не на View делать запрос "а имею ли я доступ к линке", а сам View формировать исходя из того, какому юзеру его отдаем. Т.е. проверка доступности к линке отдельных запросом тот еще костыль.
0
|
29.06.2017, 17:34 | |
29.06.2017, 17:34 | |
Помогаю со студенческими работами здесь
17
Проверка прав пользователя при входе в БД Ограничение прав пользователя Определение прав пользоваТеля Ограничения прав пользователя Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |