注册服务


layout: docs-default

自定义服务

IdentityServer3提供了诸多的扩展点来扩展数据存储,验证逻辑和其他支持IdentityServer做为一个令牌服务的通用功能。
我们把这些扩展点成为"服务".

请看 here 了解所有的可扩展服务.

必须实现的服务

开发者必须实现有三个服务来使用IdentitySever:

  • 用户服务(IUserService)

  • 客户端存储 (IClientStore)

  • 作用域存储(IScopeStore)
    这些服务,我们都提供简单的内存服务。也有各种相关的社区实现版来支持数据存储。
    请看 here 了解更多.

注册客户服务

我们可以通过Registration类来替换内置服务或者注册附加的自定义服务。
IdentityServer使用Registration来获得自定义服务的实例。
依赖于服务的具体实现,我们可以利用单例模式来实现一个服务实例支持所有请求,或者在每次使用服务实例的时候调用特定的初始化逻辑。为了实现这些需求,Registration类提供了不同的构造函数来注册服务:

  • new Registration(Type yourImplementation)
    • 注册实现了T接口的服务类yourImplementation
  • new Registration()
    • 注册实现了T接口的服务类Impl。这是上面那个方法的简化版,完成一样的工作。
  • new Registration(T singleton)
    • 注册实现了T接口的服务类实例singleton对象。
  • new Registration(Func factory)
    • 注册一个回调函数来按需获取实现了T接口的服务实例。
var factory = new IdentityServerServiceFactory();
factory.UserService = new Registration();

请看 Dependency Injection (DI) 了解更多信息.

服务的清理工作

除了单例模式,如果我们的服务类实现了IDisposable接口,Dispose会在HTTP请求结束时调用。

你可能感兴趣的:(注册服务)