c# - Autofac and Web Api 2 - How to get the User (authenticated or not) -


i having issue users , autofac. followed guide said current user use in services, must first create wrapper class this:

public class principalprovider : iprincipalprovider {     public iprincipal user => httpcontext.current?.user; } 

and need register perdependency in module this:

builder.registertype<principalprovider>().as<iprincipalprovider>().instanceperdependency(); 

then have simple controller:

private readonly ihealthcheckprovider _healthcheckprovider;  /// <summary> /// default constructor /// </summary> /// <param name="healthcheckprovider">the provider used health checks</param> public healthcheckcontroller(ihealthcheckprovider healthcheckprovider) {     _healthcheckprovider = healthcheckprovider; }  /// <summary> /// lists current services , status details /// </summary> /// <returns></returns> [httpget] [route("")] public async task<ihttpactionresult> listasync() => ok(await _healthcheckprovider.listasync()); 

the healthcheck provider has principal provider injected , list method tries current user:

private readonly cormarconfig _config; private readonly ihealthcheckservice _healthcheckservice; private readonly iunitofwork _unitofwork;  private readonly lazy<iprincipalprovider> _principalprovider;  public healthcheckprovider(iunitofwork unitofwork, cormarconfig config, ihealthcheckservice healthcheckservice, lazy<iprincipalprovider> principalprovider) {     _unitofwork = unitofwork;     _config = config;     _healthcheckservice = healthcheckservice;      _principalprovider = principalprovider; }  public async task<ilist<healthcheck>> listasync() {     var models = await _healthcheckservice.list().tolistasync();     var user = _principalprovider.value.user;     return models; } 

the problem have user null. know how can solve this?

and reference sake, here config method in startupconfig.cs class:

public void configuration(iappbuilder app) {      // cors must first, or not work     app.usecors(corsoptions.allowall);     cultureinfo.defaultthreadcurrentculture = cultureinfo.createspecificculture("en-gb");      // our configuration     var config = new httpconfiguration();     var container = configureinversionofcontrol(app, config);     var scope = config.dependencyresolver.getrootlifetimescope();     var serveroptions = configureoauthtokengeneration(app, scope);      // configur our application     configureoauthtokenconsumption(app);     configurewebapi(config, scope);      // register autofac middleware first. adds     // autofac-injected middleware registered container.     app.useautofacmiddleware(container);     app.useautofacwebapi(config);     app.useoauthauthorizationserver(serveroptions);     app.usewebapi(config); } 

i don't think wrong in there, never know.


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -