【发布时间】:2015-02-17 00:34:39
【问题描述】:
我是shiro的新手,在eclipse中,我创建了一个动态的web项目,在这个项目中我曾经使用tomcat服务器测试过shiro的登录、注销、授权等功能,现在我想用注解进行实验@RequiredRoles 用于授权,为此我安装了插件 AJDT 以启用 AspectJ,并转换了我的项目,使其具有 AOP 功能,我将切面切面 org.apache.shiro.aspectj.ShiroAnnotationAuthorizingAspectfollowing 添加到 META 下的 aop.xml -信息 但没有任何工作,从一个网络表单我尝试调用一个试图访问某个类中的方法的 servlet,这个方法用 @RequiredRoles 注释进行了注释,虽然登录的人没有被授权,他仍然可以调用方法!!! 我觉得如果我错过了一些特别是我对shiro和aspectj都很陌生的东西,非常感谢任何启示
【问题讨论】:
-
我认为问题是没有看到甚至没有考虑过 aop.xml 文件,我试图包含 org.apache.shiro.aspectj.ShiroAnnotationAuthorizingAspectfollowing 的源代码,一切正常,甚至如果没有 aop.xml,谁能告诉我如何从外部 jar 调用方面?
-
我从来没有使用过 Shiro,甚至不知道它有什么用,但是当我查看作为文档一部分提供的 AspectJ sample project 时,我看到 Maven 构建使用 AspectJ Maven插件,即它使用编译时编织(CTW)而不是加载时编织(LTW)。因为 aop.xml 仅用于 LTW,所以您认为它丢失的假设似乎是错误的。这是 StackOverflow。请发布一些代码,最好是SSCCE,以帮助我们帮助您。
-
感谢您的回复,根据我在 Aspectj 和 shiro 方面的知识,我正在尝试使用 shiro 实现提供的已经预编译的方面,我需要 LTW。我试图在我的项目中包含方面的来源,并且一切正常,我的问题是当我需要将我的代码链接到外部方面时。我觉得问题是否在于告诉 tomcat 使用 LTW
-
然后你单独编译你的方面并通过 LTW 将它编织到你的 Java 类中。美好的。我怎么知道?您没有发布任何代码或配置详细信息,只是简单的散文。这样你就可以把你的问题变成一个测验,而不是我可以分析的东西。很抱歉在这种情况下猜错了。 P.S.:如果你有不错的 AspectJ 知识,怎么会忘记在命令行中指定编织代理? ;-)
-
方面已经预编译,我已经说过它来自外部 jar,对不起,我的意思是 Modest 不是 Decent,我已经在我的帖子中提到我对 Aspectj 和 shiro 都是新手。无论如何,非常感谢你试图帮助我:)