我应该在哪里放置用户身份验证?

时间:2017-03-21 14:26:41

标签: architecture

我有一个经典的分层服务器应用程序。这些图层是:

  • 服务层(充当外观模式)
  • 逻辑层
  • 数据访问层
  • 数据库图层

我主要进行异常管理和登录服务层。

用户提供由身份验证逻辑针对数据库或其他Web服务进行检查的凭据对象。 权限由用户为成员的组管理,权限基本上只是一个分配给组的布尔值的ID。

我的问题是,我应该在服务层或逻辑层上进行身份验证和授权检查吗?

1 个答案:

答案 0 :(得分:0)

作为Web应用程序的一般做法(我假设您的是Web应用程序),授权检查在API层完成,就像用户无法访问特定服务一样,您甚至不希望他去那里。其他可能的优势可能是,当您使用Junits测试服务层时,您不需要编写填充安全上下文的逻辑。在某种程度上,我同意授权检查是业务逻辑的一部分,控制器不应该混淆业务逻辑,但现在使用像Spring这样的框架,只需简单地添加注释,这样仍可保持代码的可读性

但很多人都有意见将安全性推向尽可能低的层次。