TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
async / noway — Будни разработчика

21 May, 21:47

Telegram'da ochish Ulashish Shikoyat qilish

Еще один интересный кейс из рабочей практики.

В нашем фреймворке есть мощный механизм для аутентификации и авторизации, можно использовать ролевую модель или более новую на базе клеймов. Есть IAuthorizationService

С методом
AuthorizeAsync(ClaimsPrincipal, Object, String)

Соответственно, мы можем сделать свой набор прав
public class AuthorizationRequirement
{
public class CanViewRequirement : IAuthorizationRequirement { }

}


Создать политику
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("CanViewPolicy", policy =>
policy.AddRequirements(new AuthorizationRequirement.CanViewRequirement()));
});

И создать свой хэндлер
public class CustomAuthorizationHandler : AuthorizationHandler
{

…
protected override Task HandleRequirementAsync(
AuthorizationHandlerContext context,
AuthorizationRequirement.CanViewRequirement requirement,
Model resource)
{
///
}
…
}

И наконец вызывать на конкретном ресурсе (Model), очень просто и красиво
var authResult = await _authorizationService.AuthorizeAsync(User, OurObject, "CanViewPolicy");

if (!authResult.Succeeded)
{
return Forbid();
}


Кто не знал такого – знайте, что так можно. Возможно, кто-то спросит зачем это, ведь есть и ролевка, и клеймы, и можно делать свои аттрибуты и отклонять запросы на уровне эндпоинтов?
А я отвечу: часто, особенно во всяких корпоративных CRM, доступ строится динамически исходя из конкретного пользователя и конкретного ресурса, куда запрашивается доступ. Банальный пример, флоу какого-то документа в документообороте. Тут понятно, что подписывает руководитель, какие-то промежуточные визы ставят связанные службы (юристы, экономисты, и т.д.), но вот доступ к какому-то документу, или файлу, или действию может только инициатор, а еще чаще требуется чтобы доступ имел инициатор и его непосредственный руководитель.
И вот как раз для таких сценариев очень удобно использовать этот механизм, обращаемся к ресурсру, смотрим кто автор, смотрим куда-то в 1C / AD – кто там руководитель, смотрим потом уже в контекст Http запроса и определяем, а можно ли отдать документ или нет.

123 0 0 5
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot