【问题标题】:Shiro Annotations are not scanned不扫描 Shiro 注释
【发布时间】: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 都是新手。无论如何,非常感谢你试图帮助我:)

标签: tomcat aspectj shiro


【解决方案1】:

我通过在 catalina.bat 中添加以下行解决了我的问题:

SET JAVA_OPTS=%JAVA_OPTS% -javaagent:"C:\Apatche\apache-tomcat-7.0.47\lib\aspectjweaver-1.7.4.jar" 

【讨论】:

  • 好吧,如果你使用 LTW 并且不指定任何织造剂,它就无法工作。请参阅我对上述测验情况的评论。顺便说一句,你可以在这里接受你自己的答案,尽管我宁愿建议完全删除这个问题。
  • 删除问题!!!,您说您从未使用过 shiro,并且我在许多没有提供答案的地方看到了我的问题“将 shiro 与 Aspectj 集成”,请不要假设你必须与每个人共存的知识。再次感谢
  • 正如我所说,这是一个建议。您没有义务遵守它。 :-) 但是请通过接受您自己的答案来结束问题。
猜你喜欢
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 2021-08-10
  • 2010-09-20
  • 1970-01-01
相关资源
最近更新 更多