私はAOPの知識が必要な設定に苦労しています。Spring AOPとapache shiroの設定。注釈がスキャンされていません
私はAOPが私が成功することなくしばらくの間得ようとしている部分であることを認めなければなりません。 私のshiro注釈はスキャンされないので無視されるようです。
私はshiro 1.1.0+ maven3 + spring 3.0.5.RELEASE、ZK 5.0.6でHibernate 3.6.1.Finalを使用しようとしました。 私はhibernaterealmをデータベースに接続して作業しています。認証が正常に動作しています。
ので、許可側をテストするために、私はどこかに私のコードでは、この持っている:
Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isPermitted("businessaccount:list")) {
throw new AuthorizationException("User not authorized");
}
をし、それが正常に動作します。
私はZK GenericForwardControllerを拡張しているコントローラクラスで最初にインターフェイスを使用する計画はなかったので、私のアクセス許可がロードされていることを知っています。 。
私はこれを見てきましたが、私はメソッドの@RequiresPersmissionsを使って1つのインターフェースでtryをしようと決めました。
@Component("layouteventhandler")
public class LayoutEventHandlerImpl extends GenericForwardComposer implements LayoutEventHandler {
Logger logger = Logger.getLogger(LayoutEventHandlerImpl.class);
Menuitem logout;
//...
@Override
public void onClick$pAccounts() {
try {
execution.sendRedirect("/accounts/personal/list");
} catch (Exception ex) {
logger.info("Error redirecting to personal accounts", ex);
}
}
@Override
public void onClick$bAccounts() {
try {
execution.sendRedirect("/accounts/business/list");
} catch (Exception ex) {
logger.info("Error redirecting to business accounts", ex);
}
}
//.....
}
そのインターフェイス、それを:ここでのコードの抜粋です私は何か間違ったことをやっている私のlog.Maybeにはエラーではありません、それは不正subject.thereへのアクセス権を与えているのように
は明らかにそれはまだ働いていません:ここ
public interface LayoutEventHandler {
@RequiresPermissions(value="personalaccount:list")
public void onClick$pAccounts();
@RequiresPermissions(value="businessaccount:list")
public void onClick$bAccounts();
//.....
}
は私史郎のApplicationContextのある
<bean id="hibernateRealm" class="com.personal.project.admin.webapp.security.DatabaseRealm" />
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="hibernateRealm" />
</bean>
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
depends-on="lifecycleBeanPostProcessor">
<!-- <property name="proxyTargetClass" value="true" />-->
</bean>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager"/>
</bean>
<!-- Secure Spring remoting: Ensure any Spring Remoting method invocations can be associated
with a Subject for security checks. -->
<bean id="secureRemoteInvocationExecutor" class="org.apache.shiro.spring.remoting.SecureRemoteInvocationExecutor">
<property name="securityManager" ref="securityManager"/>
</bean>
<!-- ... -->
私は何をすべきか?読んでお手伝いしてくれてありがとう
詳細情報を提供できますか?あなたのShiro注釈はどのように無視されますか?あなたのクラスでは、それらが配線されているのはヌルですか? – Caps
こんにちは私があなたの要望どおりに詳細を追加しました。ありがとう –
これはまだ興味がありますか?あなたは他のAOPの使い方を持っていますか? – rudolfson