Gå til innhold

Anbefalte innlegg

Hei!

jeg holder på å lage en webshop for et skoleprosjekt (ikke noe som skal ut på den åpne veven altså) og jeg lurer fælt på hvordan man lager en unik session variabel for en bruker når man feks logger seg inn på sin egen profil? All brukerdata ligger i en database og jeg bruker for det meste LINQ layer for håndtering av databasen. Code behind er C#. Jeg bruker en session variabel for alle adminrbrukere, men denne er ikke unik for hver enkelt admin da de redigerer de samme dataene på siden. Har søkt litt på nettet, men har ikke funnet noe som håndterer dette enkelt med code behind og C# (heller mer ASPX kode direkte).

 

Det er jo liksom snakk om en grunnleggende funksjon, jeg mener om Hans logger inn på Amazon.com så vil han ikke forvente å se dataene til Jens så det bør jo være en enkel måte å håndtere dette på.

På forhånd takk for svar!

Lenke til kommentar
Videoannonse
Annonse

Litt usikker på om jeg forstå hva du mener, eller om dette vil funke for deg.

 

Når vi skulle skille mellom brukere så brukte vi de Memebership funksjonene, og Login databasen som er forhåndsdefinert.

 

Vi brukte

 

Membership.GetUser(Context.User.Identity.Name).ProviderUserKey.ToString()

 

Håper det hjelper.

 

Ser derimot ut som om du kanskje bruker din egen database bil brukerdata, da vil du vel sette en nøkkel til hver user selv, og bare hente ut deres nøkkel på når de logger inn, for så å legge den i sesjonsvariabelen. For deretter å bare hente ut brukernavn og relevant data tilhørende til denne nøkkelen.

Endret av Cemi
Lenke til kommentar

Det jeg ønsker er at hans skal se hans sin profil og ikke jens sin om du skjønner.

Her er logginn metoden som returnerer true eller false og sesjonsvariabelen blir da satt etter hvorvidt den er true eller false.

 public static bool loggInn(string innBruker, string innPassord)
       {
           using (var db = new DBklasseDataContext())
           {
               if (innPassord.Length == 0) { return false; }
               byte[] passordArray = lagHash(innPassord);

               try
               {
                   var brukere2 = (from i in db.user2s where i.Brukernavn == innBruker && i.Passord == passordArray select i).Single();
                   return brukere2.Brukernavn == innBruker;
               }

               catch (Exception feil)
               {
                   return false;
               }
           }

 

Mulig man må gjøre denne biten på en annen måte for LINQ laget er kanskje ikke helt bra utviklet for å håndtere slikt.

Lenke til kommentar

Såvidt jeg vet, ville du i databasen over brukere ha et felt med "unik-ID" som kan brukes til å skille brukere.

 

Når bruker logger inn henter du ut nøkkelen som står sammen med brukernavnet, legger det i din sesjonsvariabel, og henter deretter ut brukerID med where "nøkkelfelt == nøkkelen i sesjon".

 

Da vil du kunne laste profilen til den som logger inn, og ikke en annens. Da du antageligvis har en BrukerID som er felles i brukertabellen, og alle andre som har info som hører til denne brukeren.

 

Dersom jeg ikke har misforstått helt :)

Endret av Cemi
Lenke til kommentar
  • 3 uker senere...

Trenger vel i grunn ikke si annet enn følgende:

Session.SessionID

 

Session.SessionID er en unik nøkkel som blir gitt hver bruker som besøker nettsiden og som fungerer så lenge nettleseren er oppe.

 

Vet ikke om du bruker MVC oppsett eller ei, men f.eks

var list = db.Users.Where(m => m.Username.ToLower() == this.Username.ToLower() && m.Password == pw).ToList();
if (list.Count == 1)
{
//Save current SessionID to user
list[0].SessionKey = Session.SessionID;
//SaveChanges to database
db.SaveChanges();
}

 

Så er det bare til på ProfilePage koble til database og søk etter bruker med SessionKey == Session.SessionID

Endret av brgr
Lenke til kommentar
  • 2 uker senere...

Session.SessionID er ikke garantert unik og skal derfor ikke benyttes som noensomhelst form for ID i databasen.

 

Hvis målet til trådstarter er å passe på hvilke profiler som vises når en bruker er innlogget så er vel vanlig standard å lagre databasens unike brukeridentifikator i en sesjonsvariabel?

 

Session["userid"] = mittBrukerObjekt.BrukerID;

 

-C-

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...