有一些公共组件跨项目使用:
是否有一个一致的设计模式可以用于每个这些公共模块?顺便说一句,框架可以不同,比如JAAS/JNDI用于用户身份验证和授权,log4j/java日志记录用于日志记录,JavaMail用于E,JDBC/Hibernate用于DataBase访问。
例如,有用于数据库访问的DAO。无论使用何种框架(JAAS/JNDI/SSO),是否有任何良好的设计模式可用于用户身份验证和授权?
发布于 2008-10-26 14:53:16
发布于 2008-10-26 16:34:53
发布于 2008-10-28 07:34:05
对于使用面向方面的编程,特别是拦截器,我会非常谨慎。截取程序和一些AOP实现在运行时运行,实际上并不修改正在运行的代码。
如果应用程序部署错误,没有拦截器/方面,会发生什么情况?一般来说,您的应用程序可能在很大程度上依赖于拦截器提供的功能,并且在没有它的情况下会明显中断。但授权有点不同。如果用户没有得到授权,就会发生一些事情,比如引发异常。但是在典型的情况下,用户是被授权的,而拦截是没有操作的.当应用程序在没有授权拦截器的情况下意外部署时,它有效地授权所有操作。
相反,使用显式权限检查的传统方法在敏感操作本身中包含了安全性,因此它不依赖于拦截器、过滤器或运行时方面的外部配置。
从历史上看,当AOP是一个寻找问题的解决方案时,安全性就会被当作潜在的受害者。不幸的是,AOP爱好者倾向于忽视安全地将其应用于这一重要功能所需的批判性思维。我相信这是可以做到的,但它并不像注释几个方法那么简单。
https://stackoverflow.com/questions/238710
复制