首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中用于用户身份验证的设计模式

Java中用于用户身份验证的设计模式
EN

Stack Overflow用户
提问于 2008-10-26 22:20:21
回答 7查看 10.1K关注 0票数 2

有一些公共组件跨项目使用:

  1. 用户认证和授权
  2. 异常处理
  3. 日志记录
  4. 电子邮件
  5. DataBase访问
  6. 缓存等

是否有一个一致的设计模式可以用于每个这些公共模块?顺便说一句,框架可以不同,比如JAAS/JNDI用于用户身份验证和授权,log4j/java日志记录用于日志记录,JavaMail用于E,JDBC/Hibernate用于DataBase访问。

例如,有用于数据库访问的DAO。无论使用何种框架(JAAS/JNDI/SSO),是否有任何良好的设计模式可用于用户身份验证和授权?

EN

回答 7

Stack Overflow用户

发布于 2008-10-26 22:53:16

也许它本身并不是一个模式,但我一直认为spring注释方法非常聪明。本质上,您注释了需要保护的方法。如果您有一个很好的分层架构,那么这将使事情变得非常简单!它为你做了所有的艰苦工作。看看这里常见问题很好

作为我和罗德·约翰逊的春季训练的一部分,我只在一些基本的东西中使用过这个。

票数 2
EN

Stack Overflow用户

发布于 2008-10-27 00:34:53

对于横切关注点,您可能需要考虑面向方面编程(AOP)。与其说是一种设计模式,不如说是在您描述的场景中使用它。简而言之,您有许多需要安全性的组件,...you在其他地方定义了安全性,并让AOP系统根据需要将它添加到组件中。这样,您就可以围绕核心业务案例来设计代码,而不必过多地担心安全性。保安会自动注入。

文章可能会有所帮助。它解释了春天是如何做到的。我现在在一个大型项目中使用Spring,我不知道在没有Spring之前是如何管理的。

这里是Spring本身关于它的AOP的文档。

我知道,这可能不适用于您提到的每个场景,但这可能是一个开始。

票数 2
EN

Stack Overflow用户

发布于 2008-10-28 15:34:05

对于使用面向方面的编程,特别是拦截器,我会非常谨慎。截取程序和一些AOP实现在运行时运行,实际上并不修改正在运行的代码。

如果应用程序部署错误,没有拦截器/方面,会发生什么情况?一般来说,您的应用程序可能在很大程度上依赖于拦截器提供的功能,并且在没有它的情况下会明显中断。但授权有点不同。如果用户没有得到授权,就会发生一些事情,比如引发异常。但是在典型的情况下,用户是被授权的,而拦截是没有操作的.当应用程序在没有授权拦截器的情况下意外部署时,它有效地授权所有操作。

相反,使用显式权限检查的传统方法在敏感操作本身中包含了安全性,因此它不依赖于拦截器、过滤器或运行时方面的外部配置。

从历史上看,当AOP是一个寻找问题的解决方案时,安全性就会被当作潜在的受害者。不幸的是,AOP爱好者倾向于忽视安全地将其应用于这一重要功能所需的批判性思维。我相信这是可以做到的,但它并不像注释几个方法那么简单。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/238710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档