Extend AspNetCore.Identity.EntityFrameworkCore.UserStore (V2.1.3)












0















I simply want to extend the userstore and add extra method. I'm not able to define the correct constructor the customuserstore. How do I define constructor



public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
where TUser : class
{
// constructor goes here

public Task<string> GetDistinguishedNameAsync(TUser user)
{
return Task.FromResult(string.Empty);
}
}

public interface IUserLdapStore<TUser>
where TUser : class
{
/// <summary>
/// When implemented in a derived class, gets the DN that should be used to attempt an LDAP bind for validatio of a user's password.
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
Task<string> GetDistinguishedNameAsync(TUser user);
}


Getting following errors:




The type '`TUser' cannot be used as type parameter 'TUser' in the generic type or method 'UserStore'.



There is no implicit reference conversion from 'TUser' to 'Microsoft.AspNetCore.Identity.IdentityUser'.



'TUser' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TUser' in the generic type or method 'UserStore



There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'











share|improve this question





























    0















    I simply want to extend the userstore and add extra method. I'm not able to define the correct constructor the customuserstore. How do I define constructor



    public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
    where TUser : class
    {
    // constructor goes here

    public Task<string> GetDistinguishedNameAsync(TUser user)
    {
    return Task.FromResult(string.Empty);
    }
    }

    public interface IUserLdapStore<TUser>
    where TUser : class
    {
    /// <summary>
    /// When implemented in a derived class, gets the DN that should be used to attempt an LDAP bind for validatio of a user's password.
    /// </summary>
    /// <param name="user"></param>
    /// <returns></returns>
    Task<string> GetDistinguishedNameAsync(TUser user);
    }


    Getting following errors:




    The type '`TUser' cannot be used as type parameter 'TUser' in the generic type or method 'UserStore'.



    There is no implicit reference conversion from 'TUser' to 'Microsoft.AspNetCore.Identity.IdentityUser'.



    'TUser' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TUser' in the generic type or method 'UserStore



    There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'











    share|improve this question



























      0












      0








      0








      I simply want to extend the userstore and add extra method. I'm not able to define the correct constructor the customuserstore. How do I define constructor



      public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
      where TUser : class
      {
      // constructor goes here

      public Task<string> GetDistinguishedNameAsync(TUser user)
      {
      return Task.FromResult(string.Empty);
      }
      }

      public interface IUserLdapStore<TUser>
      where TUser : class
      {
      /// <summary>
      /// When implemented in a derived class, gets the DN that should be used to attempt an LDAP bind for validatio of a user's password.
      /// </summary>
      /// <param name="user"></param>
      /// <returns></returns>
      Task<string> GetDistinguishedNameAsync(TUser user);
      }


      Getting following errors:




      The type '`TUser' cannot be used as type parameter 'TUser' in the generic type or method 'UserStore'.



      There is no implicit reference conversion from 'TUser' to 'Microsoft.AspNetCore.Identity.IdentityUser'.



      'TUser' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TUser' in the generic type or method 'UserStore



      There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'











      share|improve this question
















      I simply want to extend the userstore and add extra method. I'm not able to define the correct constructor the customuserstore. How do I define constructor



      public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
      where TUser : class
      {
      // constructor goes here

      public Task<string> GetDistinguishedNameAsync(TUser user)
      {
      return Task.FromResult(string.Empty);
      }
      }

      public interface IUserLdapStore<TUser>
      where TUser : class
      {
      /// <summary>
      /// When implemented in a derived class, gets the DN that should be used to attempt an LDAP bind for validatio of a user's password.
      /// </summary>
      /// <param name="user"></param>
      /// <returns></returns>
      Task<string> GetDistinguishedNameAsync(TUser user);
      }


      Getting following errors:




      The type '`TUser' cannot be used as type parameter 'TUser' in the generic type or method 'UserStore'.



      There is no implicit reference conversion from 'TUser' to 'Microsoft.AspNetCore.Identity.IdentityUser'.



      'TUser' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TUser' in the generic type or method 'UserStore



      There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'








      c# asp.net-core asp.net-core-identity






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 15 '18 at 17:36









      Kirk Larkin

      22k64262




      22k64262










      asked Nov 15 '18 at 17:01









      Abu SufyanAbu Sufyan

      6




      6
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Going through the error message carefully you seem to be missing to add the constraint for TUser that forces it to inherit from IdentityUser<string>. This is an inherited constraint from Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>.



          Adding that constraint to your custom store is something like:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          //constructor goes here....

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Thanks to @KirkLarkin for pointing the second error I completely overlooked.




          There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'




          The error is a little cryptic, but it's easily solvable if we provide a constructor for the custom store providing the parameters for the base class:



          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }


          Putting all these together, the class should look like this:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Hope this helps!






          share|improve this answer


























          • My TUser is defined as this: public class ApplicationUser : IdentityUser<int>

            – Abu Sufyan
            Nov 20 '18 at 17:04













          • @user10658716 if that's the case, it seems that you'll have to do a lot more than just inheriting from IdentityUser<int>. You should definitely take a look at these: docs.microsoft.com/en-us/aspnet/core/security/authentication/…, johnatten.com/2014/07/13/….

            – Karel Tamayo
            Nov 20 '18 at 17:33











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324505%2fextend-aspnetcore-identity-entityframeworkcore-userstore-v2-1-3%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          Going through the error message carefully you seem to be missing to add the constraint for TUser that forces it to inherit from IdentityUser<string>. This is an inherited constraint from Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>.



          Adding that constraint to your custom store is something like:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          //constructor goes here....

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Thanks to @KirkLarkin for pointing the second error I completely overlooked.




          There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'




          The error is a little cryptic, but it's easily solvable if we provide a constructor for the custom store providing the parameters for the base class:



          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }


          Putting all these together, the class should look like this:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Hope this helps!






          share|improve this answer


























          • My TUser is defined as this: public class ApplicationUser : IdentityUser<int>

            – Abu Sufyan
            Nov 20 '18 at 17:04













          • @user10658716 if that's the case, it seems that you'll have to do a lot more than just inheriting from IdentityUser<int>. You should definitely take a look at these: docs.microsoft.com/en-us/aspnet/core/security/authentication/…, johnatten.com/2014/07/13/….

            – Karel Tamayo
            Nov 20 '18 at 17:33
















          1














          Going through the error message carefully you seem to be missing to add the constraint for TUser that forces it to inherit from IdentityUser<string>. This is an inherited constraint from Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>.



          Adding that constraint to your custom store is something like:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          //constructor goes here....

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Thanks to @KirkLarkin for pointing the second error I completely overlooked.




          There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'




          The error is a little cryptic, but it's easily solvable if we provide a constructor for the custom store providing the parameters for the base class:



          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }


          Putting all these together, the class should look like this:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Hope this helps!






          share|improve this answer


























          • My TUser is defined as this: public class ApplicationUser : IdentityUser<int>

            – Abu Sufyan
            Nov 20 '18 at 17:04













          • @user10658716 if that's the case, it seems that you'll have to do a lot more than just inheriting from IdentityUser<int>. You should definitely take a look at these: docs.microsoft.com/en-us/aspnet/core/security/authentication/…, johnatten.com/2014/07/13/….

            – Karel Tamayo
            Nov 20 '18 at 17:33














          1












          1








          1







          Going through the error message carefully you seem to be missing to add the constraint for TUser that forces it to inherit from IdentityUser<string>. This is an inherited constraint from Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>.



          Adding that constraint to your custom store is something like:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          //constructor goes here....

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Thanks to @KirkLarkin for pointing the second error I completely overlooked.




          There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'




          The error is a little cryptic, but it's easily solvable if we provide a constructor for the custom store providing the parameters for the base class:



          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }


          Putting all these together, the class should look like this:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Hope this helps!






          share|improve this answer















          Going through the error message carefully you seem to be missing to add the constraint for TUser that forces it to inherit from IdentityUser<string>. This is an inherited constraint from Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>.



          Adding that constraint to your custom store is something like:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          //constructor goes here....

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Thanks to @KirkLarkin for pointing the second error I completely overlooked.




          There is no argument given that corresponds to the required formal parameter 'context' of 'UserStore.UserStore(DbContext, IdentityErrorDescriber)'




          The error is a little cryptic, but it's easily solvable if we provide a constructor for the custom store providing the parameters for the base class:



          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }


          Putting all these together, the class should look like this:



          public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
          where TUser : IdentityUser<string>, new()
          {
          public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
          {
          }

          public Task<string> GetDistinguishedNameAsync(TUser user)
          {
          return Task.FromResult(string.Empty);
          }
          }


          Hope this helps!







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 15 '18 at 17:43

























          answered Nov 15 '18 at 17:23









          Karel TamayoKarel Tamayo

          2,79721523




          2,79721523













          • My TUser is defined as this: public class ApplicationUser : IdentityUser<int>

            – Abu Sufyan
            Nov 20 '18 at 17:04













          • @user10658716 if that's the case, it seems that you'll have to do a lot more than just inheriting from IdentityUser<int>. You should definitely take a look at these: docs.microsoft.com/en-us/aspnet/core/security/authentication/…, johnatten.com/2014/07/13/….

            – Karel Tamayo
            Nov 20 '18 at 17:33



















          • My TUser is defined as this: public class ApplicationUser : IdentityUser<int>

            – Abu Sufyan
            Nov 20 '18 at 17:04













          • @user10658716 if that's the case, it seems that you'll have to do a lot more than just inheriting from IdentityUser<int>. You should definitely take a look at these: docs.microsoft.com/en-us/aspnet/core/security/authentication/…, johnatten.com/2014/07/13/….

            – Karel Tamayo
            Nov 20 '18 at 17:33

















          My TUser is defined as this: public class ApplicationUser : IdentityUser<int>

          – Abu Sufyan
          Nov 20 '18 at 17:04







          My TUser is defined as this: public class ApplicationUser : IdentityUser<int>

          – Abu Sufyan
          Nov 20 '18 at 17:04















          @user10658716 if that's the case, it seems that you'll have to do a lot more than just inheriting from IdentityUser<int>. You should definitely take a look at these: docs.microsoft.com/en-us/aspnet/core/security/authentication/…, johnatten.com/2014/07/13/….

          – Karel Tamayo
          Nov 20 '18 at 17:33





          @user10658716 if that's the case, it seems that you'll have to do a lot more than just inheriting from IdentityUser<int>. You should definitely take a look at these: docs.microsoft.com/en-us/aspnet/core/security/authentication/…, johnatten.com/2014/07/13/….

          – Karel Tamayo
          Nov 20 '18 at 17:33




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324505%2fextend-aspnetcore-identity-entityframeworkcore-userstore-v2-1-3%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Bressuire

          Vorschmack

          Quarantine