2013-10-06 5 views
2

Из docs я прочитал, что можно определить разрешение атрибутов на уровень (а также уровни ресурсов и экземпляра)Как атрибут уровня определяются в Apache Shiro

Уровень Атрибут - Разрешение теперь указывается атрибут экземпляра или ресурса. Пользователь может редактировать адрес в записи клиента IBM.

Каким образом эти разрешения могут быть определены декларативно с использованием формата <resource>:<action>:<instance>, в котором обычно определяются разрешения в Сиро? Казалось бы логичным было бы, если бы можно было сделать что-то вроде <resource>:<action>:<instance>:<attributename>, но я не могу найти документы где-нибудь, обсуждая это.

ответ

0

Вы проверили http://shiro.apache.org/permissions.html?

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

public class OurAuthorizingReam extends AuthorizingRealm { 
    ... 
@Override 
public AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 
    ... code to find permission infp 

    SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); 
    while (.. looping through permission info){ 
      info.addStringPermission(... the permission string constructed); 
    } 
    return info; 
} 
+1

Я прочитал предоставленную страницу несколько раз, но ничего не сказал об атрибутах. Можете ли вы немного рассказать мне о том, что делает ваш собственный код? Вам нужно написать свой собственный код, чтобы связать потоки строк с тем, какие атрибуты ресурса могут быть прочитаны/записаны, или делает ли Сиро какое-то промежуточное программное обеспечение, которое вы можете использовать? –

+1

Единственное, что делает shiro, это предоставить вам информацию о том, имеет ли пользователь определенное разрешение (Subject.isPermited()) и способ добавления этих прав пользователю. Мы создали собственный код. Поэтому мы строим строки разрешений из нашей собственной логики для проверки атрибутов. – Wouter

Смежные вопросы