.net - user.identity.getuserid = null but username works -


i days solve problem. user.identity.name or user.identity.username got right value after login.

but when want know userid null.

everything works fine can login can see username user.identity.name when want see userid null knows whats problem ?

my user class gebruiker == user

{     [datacontract]      public partial class gebruiker     {           [datamember]         [key]           [databasegenerated(databasegeneratedoption.identity)]      //   public short gebruikerid { get; set; }             public int gebruikerid { get; set; }          //  [foreignkey("role")]         //  public long roleid { get; set; }          //  [foreignkey("klanten")]         // public long klantid { get; set; }           [datamember]         [required(errormessage = "gebruikersnaam vereist")]         [remote("doesusernameexist", "gebruiker", httpmethod = "post", errormessage = "gebruiker bestaat alreeds")]         public string gebruikersnaam { get; set; }          [datamember]         [required(errormessage = "wachtword vereist")]         public string wachtwoordhash { get; set; }          [datamember]         [required(errormessage = "naam verplicht")]         public string naam { get; set; }          [datamember]         public string voornaam { get; set; }          [datamember]         [required(errormessage = "een email verplicht")]         [datatype(datatype.emailaddress, errormessage = "het emailadres niet geldig")]         public string email { get; set; }          // [required]     //    public icollection<role> roles { get; set; }         public virtual icollection<gebruikerroles> gebruikerroles { get; set; }         public virtual icollection<reservatie> reservatie { get; set; }            } 

article

public class artikel     {          [key]         [required]         //  [databasegenerated(databasegeneratedoption.computed)]         public long artikelid { get; set; }          [foreignkey("categorie")]         [required(errormessage = "u bent verplict een categorie te selecteren")]         public long categorieid { get; set; }           [stringlength(125, errormessage = "max 125 tekens")]         public string naam { get; set; }          public string beschrijving { get; set; }          public int max_uitleentermijn { get; set; }          [stringlength(13,errormessage = "ean-13 barcode kan max 13 tekens bevatten")]         public string barcode{get;set;}         public string figuururl { get; set; }       //   public imagemap image { get; set; }         public byte[] byteimage { get; set; }          public virtual categorie categorie { get; set; }          public virtual icollection<reservatiedetail> reservatiedetail { get; set; }     } } 

category

  public class categorie     {         [key]         [databasegenerated(databasegeneratedoption.identity)]         public long categorieid { get; set; }          [required(errormessage = "categorie naam verplicht")]         public string naam { get; set; }         public string beschrijving { get; set; }           public virtual opleiding opleiding { get; set; }         public list<artikel> artikel1 { get; set; }        } } 

userroles

public class gebruikerroles     {          [key]         public int userroleid { get; set; }         public int gebruikerid { get; set; }         public long roleid { get; set; }          public virtual role role { get; set; }     } }    public class opleiding     {         [key]         [databasegenerated(databasegeneratedoption.identity)]         public long opleidingid { get; set; }          public string opleidingnaam { get; set; }         // public string naam { get; set; }         //  public string voornaam { get; set; }          public list<categorie> categorie1 { get; set; }         //  public list<klant> klanten { get; set; }         //public list<gebruiker> gebruiker { get; set; }          // public list<leverancier> leveranciers { get; set; }        } 

reservation

  public class reservatie     {   /*       public reservatie()         {            this.reservatiedetail = new hashset<reservatiedetail>();   *///      }         [key]         [databasegenerated(databasegeneratedoption.identity)]         public int reservatie_id { get; set; }         public guid gebruikerid { get; set; }          public long artikelid { get; set; }         public system.datetime datum { get; set; }          public datetime startdatum { get; set; }         public datetime einddatum { get; set; }          public virtual gebruiker gebruiker { get; set; }         public virtual artikel artikel { get; set; }      //   public virtual icollection<reservatiedetail> reservatiedetail { get; set; }     } } 

role

  public class role     {         [key]         public long roleid { get; set; }         public string naam { get; set; }        //  public icollection<gebruiker> gebruikers { get; set; }     } 

my repository class

  public class gebruikerrepository     {         private reserveringcontext context;          public gebruikerrepository(reserveringcontext c)         {             this.context = c;         }            public icollection<gebruiker> getalluserswithroles()         {             return context.gebruiker                 .include("roles")                 .orderby(u => u.naam)                 .thenby(u => u.voornaam)                 .tolist();          }          public gebruiker getuserbyusernameandpassword(string gebruikersnaam, string wachtwoord)         {             //wachtwoord omzetten naar md5             string hashedpass = formsauthentication.hashpasswordforstoringinconfigfile(wachtwoord, "md5");              gebruiker user = context.gebruiker                 .include("gebruikerroles")                 .where(u => u.gebruikersnaam.toupper() == gebruikersnaam.toupper() &&                             u.wachtwoordhash == hashedpass)                 .firstordefault();                 return user;          }         }      [attributeusage(attributetargets.method | attributetargets.class, inherited = true, allowmultiple = true)]     public class customauthorizeattribute : authorizeattribute     {         public override void onauthorization(authorizationcontext filtercontext)         {             string cookiename = formsauthentication.formscookiename;              if (!filtercontext.httpcontext.user.identity.isauthenticated ||                 filtercontext.httpcontext.request.cookies == null ||                 filtercontext.httpcontext.request.cookies[cookiename] == null             )             {                 handleunauthorizedrequest(filtercontext);                 return;             }              var authcookie = filtercontext.httpcontext.request.cookies[cookiename];             var authticket = formsauthentication.decrypt(authcookie.value);             string[] roles = authticket.userdata.split(',');              var useridentity = new genericidentity(authticket.name);             var userprincipal = new genericprincipal(useridentity, roles);              filtercontext.httpcontext.user = userprincipal;             base.onauthorization(filtercontext);         }     }        } 

my dbcontext

   public class reserveringcontext : dbcontext         {              public dbset<artikel> artikel { get; set; }            public dbset<reservatie> reservatie { get; set; }             public dbset<reservatiedetail> reservatiedetail { get; set; }             public dbset<categorie> categorie { get; set; }             public dbset<gebruiker> gebruiker { get; set; }             public dbset<role> role { get; set; }             public dbset<opleiding> opleiding { get; set; }              public dbset<gebruikerroles> gebruikerrole { get; set; }   } 

my controller logged in

public actionresult index()         {             var test = user.identity.getusername();             var test2 = user.identity.getuserid();             var test3 = user.isinrole("administrator");             var test4 = roles.isuserinrole("administrator");             var roles = ((claimsidentity)user.identity).claims                 .where(c => c.type == claimtypes.role)                 .select(c => c.value);             return view();         }          public actionresult login()         {             loginvm model = new loginvm();             return view(model);          }          [httppost]         public actionresult login(loginvm model, string returnurl)         {              if (modelstate.isvalid)             {                  gebruiker logged_in_user = gebruikerrepository.getuserbyusernameandpassword(model.gebruikersnaam, model.wachtwoord);               //    var newuser = gebruikerrepository.getuserbyusernameandpassword(model.gebruikersnaam, model.wachtwoord);                 if (logged_in_user != null)                 {                      ienumerable<string> rolenames = logged_in_user.gebruikerroles.select<gebruikerroles, string>(r => r.role.naam);                       string rolesstring = string.join(";", rolenames.toarray());                       formsauthenticationticket ticket = new formsauthenticationticket(                         1,                         logged_in_user.gebruikersnaam,                         datetime.now,                         datetime.now.addminutes(formsauthentication.timeout.totalminutes),                         model.rememberme,                         rolesstring                     );                         string encryptedticket = formsauthentication.encrypt(ticket);                     var authcookie = new httpcookie(formsauthentication.formscookiename, encryptedticket);                     response.cookies.add(authcookie);                      if (returnurl != null)                     {                         return redirect(returnurl);                     }                     else                     {                          tempdata["loginboodschap"] = "welkom, <b>" + logged_in_user.gebruikersnaam + "</b>.<br />u bent nu ingelogd.";                         user.identity.getuserid();                         string gebruiker;                         gebruiker k = new gebruiker();                         gebruiker = model.gebruikersnaam;                         //   k = jsonconvert.deserializeobject<gebruiker>(model.gebruikersnaam);                         var json = jsonconvert.serializeobject(logged_in_user.gebruikerid);                         if (k != null)                         {                             httpcookie newcookie = new httpcookie("shop", json);                             newcookie.value = json;                             datetime = datetime.now;                             newcookie.expires = now.addminutes(6000);                             response.cookies.add(newcookie);                             tempdata["boodschap"] = "u kunt nu starten met shoppen";                                return redirecttoaction("index", "home");                           }                         else                         {                             tempdata["boodschap"] = "verkeerde gebruikersnaam en/of wachtwoord";                             return redirecttoaction("index", "home");                         }                          }                  }                 else                 {                      modelstate.addmodelerror("", "de ingevoerde gebruikersnaam of wachtwoord ongeldig");                      return view(model);                 }              }             else             {                 //onvolledige gegevens, toon formulier opnieuw                 return view(model);             }           } 

i had same problem oauth. requestcontext.principal.identity.getusername() returned username, requestcontext.principal.identity.getuserid() returning null.

i looked in source code find reason this: https://github.com/aspnet/identity/blob/1c80580446132b6b5d9795930533aee8d6715006/src/microsoft.aspnet.identity.security/identityextensions.cs#l25-l38

turns out had set nameidentifier claim when user logged in. me grantresourceownercredentials method of oauthauthorizationserverprovider

identity.addclaim(new claim(claimtypes.nameidentifier, user.id)); 

after adding claim, getuserid started returning user's id.


Popular posts from this blog