C# “我能做什么?”;曲奇;可以调用身份验证层吗?

C# “我能做什么?”;曲奇;可以调用身份验证层吗?,c#,authentication,cookies,interface,naming,C#,Authentication,Cookies,Interface,Naming,因此,我有一个MVC框架,包括一个身份验证部分。它经历了各种有趣的API破坏性变化,因为以前它是一个巨大的静态类。我终于有了一个突破,知道它“真的”需要多抽象 身份验证似乎有三个部分 用于存储和读取用户名、密码哈希等的数据库接口 “业务”逻辑,用于处理适当的哈希、创建登录令牌和验证它们 处理cookie的“公开”层或存储登录令牌的“用户端持久性”层。这通常是cookies,但也可能是HTTP基本身份验证 无论如何,为了让每件事都很棒,并独立地对这三个层进行单元测试,我正在为这三个部分制作接口:

因此,我有一个MVC框架,包括一个身份验证部分。它经历了各种有趣的API破坏性变化,因为以前它是一个巨大的静态类。我终于有了一个突破,知道它“真的”需要多抽象

身份验证似乎有三个部分

  • 用于存储和读取用户名、密码哈希等的数据库接口
  • “业务”逻辑,用于处理适当的哈希、创建登录令牌和验证它们
  • 处理cookie的“公开”层或存储登录令牌的“用户端持久性”层。这通常是cookies,但也可能是HTTP基本身份验证
  • 无论如何,为了让每件事都很棒,并独立地对这三个层进行单元测试,我正在为这三个部分制作接口:

  • IUserStore和ISessionStore
  • iauth机制

  • 我需要一个对用户端持久性层有意义的接口名来帮助我。谁能帮我给它起个好名字吗?此外,实现者名称(即cookies层类和HTTP基本身份验证类)的加分应直接从描述中获得。在你的例子中,你已经描述了一切,所以剩下的只是挑选最重要的部分。从我的观点来看,第三部分最重要的一点是,它持久化身份验证信息,无论是cookie、登录令牌还是其他任何东西。那么,为什么不将其称为
    IAuthPersister
    甚至
    iauthAuthenticationPersister
    ?在这种情况下,实现者的名字将是
    CookieAuthPersister
    HttpBasicAuthPersister
    ,等等,表示层和下面的实现方法。

    您是否尝试过掷硬币的方法(选择正面或反面,掷硬币,如果不喜欢结果-再次掷硬币直到满意)?选择任何名称,使用10分钟-如果听起来不正确,重构。。。