Size: a a a

2020 January 28

VO

Vitaliy Orlov in pro.net
в каком-то смысле - да
источник

VO

Vitaliy Orlov in pro.net
роль - это будет совокупность прав
источник

VO

Vitaliy Orlov in pro.net
на уровне БД при чем. В приложении будут только клеймы
источник

B

Bretbas in pro.net
Vitaliy Orlov
в каком-то смысле - да
как тогда [Autorize] будет работать по иерархии клеймов?
Вот например "роль" админ должен проходить по всем методам с [Autorize] любого
источник

JS

Jack Smelov in pro.net
Bretbas
как тогда [Autorize] будет работать по иерархии клеймов?
Вот например "роль" админ должен проходить по всем методам с [Autorize] любого
Через policy
источник

VO

Vitaliy Orlov in pro.net
атрибут Autorize лишь чекает свойство User.IsAuthentificated (простите за мой англ)
источник

VO

Vitaliy Orlov in pro.net
а на методы можешь вешать кастомный атрибут
источник

VO

Vitaliy Orlov in pro.net
например
источник

VO

Vitaliy Orlov in pro.net
public class ClaimsAccessAttribute : AuthorizeAttribute
   {
       public string Issuer { get; set; }
       public string ClaimType { get; set; }
       public string Value { get; set; }

       protected override bool AuthorizeCore(HttpContextBase context)
       {
           return context.User.Identity.IsAuthenticated
                       && context.User.Identity is ClaimsIdentity
                       && ((ClaimsIdentity)context.User.Identity).HasClaim(x =>
                               x.Issuer == Issuer && x.Type == ClaimType && x.Value == Value
                       );
       }
   }
источник

VO

Vitaliy Orlov in pro.net
[ClaimsAccess(Issuer = "RemoteClaims", ClaimType = ClaimTypes.PostalCode,
           Value = "DC 20500")]
источник

VO

Vitaliy Orlov in pro.net
я пару лет назад немного делал по другому, могу в исходниках посмотреть, то только поздно вечером
источник

B

Bretbas in pro.net
@LostCoast , короче вы предлагаете отказаться от [Authorize] ? 😃
источник

VO

Vitaliy Orlov in pro.net
угу)
источник

VO

Vitaliy Orlov in pro.net
ну его можешь глобально через Configure повесить)
источник

B

Bretbas in pro.net
блин) надо разбираться вообщем
источник

VO

Vitaliy Orlov in pro.net
там главное въехать кто и когда этот набор клеймов для юзера устанавливает
источник

Н

Николай in pro.net
Bretbas
@LostCoast , короче вы предлагаете отказаться от [Authorize] ? 😃
Да для начала просто сделать кастомные policy, которые будут проверять иерархию ролей
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1#authorization-handlers
источник

Н

Николай in pro.net
Как станешь чувствовать себя комфортнее, можно будет задуматься о клеймах
источник

B

Bretbas in pro.net
@LostCoast , а в какой момент ClaimsPrincipal восстанавливает asp.net core?
этот момент можно переопределить?

Чтобы роли(допустим я пока их использовать буду), восстанавливать по Id пользователя(Id пользователя будет хранится в токене).

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

Я бы хотел хранить некий потокобезопасный кеш, который для пользователя, при выпуске токена, будет из БД вытаскивать его роли и ложить в него.
И при восстановке ClaimsPrincipal брать роли из кеша
источник

B

Bretbas in pro.net
как это замутить все?
источник