2016-09-15 51 views
0

我在Karaf 4.0.4上運行OSGI應用程序。 此應用程序不是一個Web應用程序。OSGI上的Shiro註釋

我配置了Apache Shiro以便使用自定義SecurityRealm登錄,該自定義使用存儲在SQL數據庫中的憑證。 SecurityManager和領域配置使用藍圖 這部分工作正常。

我想用類似註釋:

@RequiresPermissions("doSomething") 
@RequiresRoles("admin") 
public void myMethodToDoSomething() { 
    ... 
} 

那些annoations從不評價。 (我的安全領域protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals)方法不會被調用

閱讀一些四郎文檔後,我明白這是行不通的,因爲我沒有,因爲它在四郎春天的定義所需的攔截器turorial:

<!-- Enable Shiro Annotations for Spring-configured beans. Only run after --> 
<!-- the lifecycleBeanProcessor has run: --> 
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/> 
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> 
<property name="securityManager" ref="securityManager"/> 

但正如我不會在我的應用程序中使用的彈簧,這些線路將無法正常工作。

回答

2

您可以創建一個命名空間藍圖模塊,這可以再勾入藍圖豆安裝攔截。作爲一個示例請參閱blueprint-authz module

+0

如何安裝此類模塊?像普通的一樣? – jhamon

+0

是的。這只是一個捆綁。 –

+0

這是你的藍圖文件應該是這樣的:https://github.com/apache/aries/blob/trunk/blueprint/blueprint-itests/src/test/resources/authz.xml –