ユーザの原則にはHttpContext.Current.User
からアクセスできます。 HttpContextにコードを強く結合することは、それが非常に単体テストではありません。あなたが望むものを公開するサービスを作成してください。
public interface IPrincipleProvider {
IPrincple User { get; }
}
本番環境での実装は、次のようになります。その行わアップデートで
public class DefaultPrincipleProvider : IPrincipleProvider {
public IPrincple User { get { return HttpContext.Current.User; } }
}
依存クラスのサービスが得るすべてが注入すべき抽象
public class OrderProvider : IOrderProvider {
private readonly ClaimsIdentity identity;
public OrderProvider(IPrincipleProvider provider) {
identity = (ClaimsIdentity)provider.User.Identity;
}
//...other code
}
を使用して、通常の
//...other code removed for brevity
builder.RegisterType<DefaultPrincipleProvider>().As<IPrincipleProvider>();
builder.RegisterType<OrderProvider>().As<IOrderProvider>();
//...other code removed for brevity
として起動時にプロバイダを登録する
public class Service {
private readonly IOrderProvider _orderProvider;
public Service(IOrderProvider orderProvider) {
_orderProvider = orderProvider;
}
public IOrderProvider OrderProvider => _orderProvider;
}
Cr HttpContextをラップし、ユーザーの原則またはアイデンティティを公開するサービスを作成します。これまでにあなたが望んでいるのはどれですか – Nkosi
私に例をあげることができますか? – r3plica
チェックインの例 – Nkosi