powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [Authorize]
16 сообщений из 16, страница 1 из 1
[Authorize]
    #38930585
Mixon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую ВСЕХ
подскажите как реализовать доступ к методу для группы и пользователя
к примеру [Authorize(Users = @"Петя", Roles = @"Admin")] в данном случае доступ получит только
администратор Петя, а как дать доступ всем администраторам и любому пользователю с именем Петя.
...
Рейтинг: 0 / 0
[Authorize]
    #38930669
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Два юзера в системе с логином Петя... нормально чо...
...
Рейтинг: 0 / 0
[Authorize]
    #38930671
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mixon,

Реализуй свой атрибут на базе AuthorizeAttribute и определяй какую хочешь логику. Давай доступ хоть в зависимости от фазы луны.
...
Рейтинг: 0 / 0
[Authorize]
    #38930672
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а не проще тогда ваших Петь в отдельную роль определить "Суперадмины"
...
Рейтинг: 0 / 0
[Authorize]
    #38930684
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MixonПриветствую ВСЕХ
подскажите как реализовать доступ к методу для группы и пользователя
к примеру [Authorize(Users = @"Петя", Roles = @"Admin")] в данном случае доступ получит только
администратор Петя, а как дать доступ всем администраторам и любому пользователю с именем Петя.

Оригинальный код:

Код: 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.
        protected virtual bool IsAuthorized(HttpActionContext actionContext)
        {
            if (actionContext == null)
            {
                throw Error.ArgumentNull("actionContext");
            }

            IPrincipal user = actionContext.ControllerContext.RequestContext.Principal;
            if (user == null || user.Identity == null || !user.Identity.IsAuthenticated)
            {
                return false;
            }

            if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase))
            {
                return false;
            }

            if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole))
            {
                return false;
            }

            return true;
        }



подсказать, что надо сделать в своей реализации или сам справишься?
...
Рейтинг: 0 / 0
[Authorize]
    #38930703
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttMixonПриветствую ВСЕХ
подскажите как реализовать доступ к методу для группы и пользователя
к примеру [Authorize(Users = @"Петя", Roles = @"Admin")] в данном случае доступ получит только
администратор Петя, а как дать доступ всем администраторам и любому пользователю с именем Петя.

Оригинальный код:

Код: 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.
        protected virtual bool IsAuthorized(HttpActionContext actionContext)
        {
            if (actionContext == null)
            {
                throw Error.ArgumentNull("actionContext");
            }

            IPrincipal user = actionContext.ControllerContext.RequestContext.Principal;
            if (user == null || user.Identity == null || !user.Identity.IsAuthenticated)
            {
                return false;
            }

            if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase))
            {
                return false;
            }

            if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole))
            {
                return false;
            }

            return true;
        }




подсказать, что надо сделать в своей реализации или сам справишься?
Покажи! Интересно чесслово!
...
Рейтинг: 0 / 0
[Authorize]
    #38930738
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIПокажи! Интересно чесслово!

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
    public class MyAuthorizeAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (httpContext == null)
            {
                throw new ArgumentNullException("httpContext");
            }

            IPrincipal user = httpContext.User;
            if (!user.Identity.IsAuthenticated)
            {
                return false;
            }

            var usersSplit = SplitString(Users);
            var rolesSplit = SplitString(Roles);

            if (usersSplit.Length == 0 && rolesSplit.Length == 0)
            {
                return true;
            }

            if (usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase))
            {
                return true;
            }

            if (rolesSplit.Any(user.IsInRole))
            {
                return true;
            }

            return false;
        }

        internal static string[] SplitString(string original)
        {
            if (String.IsNullOrEmpty(original))
            {
                return new string[0];
            }
            var split = from piece in original.Split(',')
                        let trimmed = piece.Trim()
                        where !String.IsNullOrEmpty(trimmed)
                        select trimmed;
            return split.ToArray();
        }
    }
...
Рейтинг: 0 / 0
[Authorize]
    #38930782
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Молодец! Ты сделал, что в атрибуте можно прописывать несколько имен пользователей, но как это решает вопрос?
Mixonкак дать доступ всем администраторам и любому пользователю с именем Петя .
У тебя здесь много Петь?

user.Identity.Name
...
Рейтинг: 0 / 0
[Authorize]
    #38930792
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIМолодец! Ты сделал, что в атрибуте можно прописывать несколько имен пользователей, но как это решает вопрос?
Mixonкак дать доступ всем администраторам и любому пользователю с именем Петя .
У тебя здесь много Петь?

user.Identity.Name

Я ничего не сделал, всего лишь поправил логику оригинального фильтра. Оригинальный фильтр обязывает, чтобы роль, а также имя пользователя совпадали, а не что-то одно. Данный фикс меняет логику, достаточно совпадения либо по роли, либо по имени пользователя.

А ты какую-то чушь несёшь. Можешь потестить, фильтр работает.
...
Рейтинг: 0 / 0
[Authorize]
    #38930794
Mixon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо ВСЕМ!

а то я начал городить
Код: c#
1.
public void OnAuthorization(AuthorizationContext filterContext)
...
Рейтинг: 0 / 0
[Authorize]
    #38930818
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttА ты какую-то чушь несёшь. Можешь потестить, фильтр работает.
user.Identity.Name это имя пользователя которое должно быть априори уникально в пределах по крайней мере приложения как и уникально должно быть имя роли. Поэтому вопрос ТС-а изначально некорректен и подобный фильтр это хронический костыть во всей системе!
...
Рейтинг: 0 / 0
[Authorize]
    #38930829
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIuser.Identity.Name это имя пользователя которое должно быть априори уникально в пределах по крайней мере приложения как и уникально должно быть имя роли. Поэтому вопрос ТС-а изначально некорректен и подобный фильтр это хронический костыть во всей системе!

Ты просто не понял вопроса топикастера. Никаких претензий на уникальность имени пользователя изначально не было. Читай внимательнее
...
Рейтинг: 0 / 0
[Authorize]
    #38931452
Mixon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EDUARD SAPOTSKIhVosttА ты какую-то чушь несёшь. Можешь потестить, фильтр работает.
user.Identity.Name это имя пользователя которое должно быть априори уникально в пределах по крайней мере приложения как и уникально должно быть имя роли. Поэтому вопрос ТС-а изначально некорректен и подобный фильтр это хронический костыть во всей системе!

хотел бы уточнить, Вы считаете не возможность нахождения в сети двух пользователей с одним и тем же именем, но с разными паролями?
(пользователь)Петя\123
(администратор)Петя\DGW%Y&N@YWafdhgadfhDFBW$%
...
Рейтинг: 0 / 0
[Authorize]
    #38931478
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mixon,
имена да, но не учетки. когда говорите в контексте Authorize - Users там учетки именно
...
Рейтинг: 0 / 0
[Authorize]
    #38931630
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MixonВы считаете не возможность нахождения в сети двух пользователей с одним и тем же именем, но с разными паролями?
Как уже сказали, в организации может работать 10 Петь, и 20 Вась, можно в базе завести столбцы в табличке где писать их реальные имена для какой-то отчетности типа FirstName, LastName и т.д., но при авторизации речь идет об имени входа , имя под которым пользователь входит в систему должно быть уникальным в пределах этой системы.
По поводу пароля - Петру первому понравился пароль Петра второго, он сделал себе такой же, или один Петя сделал себе пароль Qwer1234 и второй так же, если юзеров много такое вполне вероятно.
...
Рейтинг: 0 / 0
[Authorize]
    #38931651
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mixonхотел бы уточнить, Вы считаете не возможность нахождения в сети двух пользователей с одним и тем же именем, но с разными паролями?
(пользователь)Петя\123
(администратор)Петя\DGW%Y&N@YWafdhgadfhDFBW$%

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


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