Diskuze: Session a SimpleSqlMembershipProvider od Altairis

C# .NET .NET (C# a Visual Basic) Session a SimpleSqlMembershipProvider od Altairis American English version English version

Avatar
klanduch
Člen
Avatar
klanduch:

Zdravim, uz dlhsie pouzivam SimpleSqlMember­shipProvider od Altairis a teraz som narazil na jeden problem.
Potrebujem zabezpecit aby sa mi nemohol prihlasit ten sami uzivatel dva krat.
Urobil som to jednoducho tak ze som v code pri logine pridal kod:

protected void LoginMain_LoggingIn(object sender, LoginCancelEventArgs e)
   {
       String sUser;
       MembershipUser user;
       ProfileCommon profil;
       if (!HttpContext.Current.User.Identity.IsAuthenticated)
       {
           Login lg = (System.Web.UI.WebControls.Login)LoginArea.FindControl("LoginMain");
           TextBox tb = (TextBox)lg.FindControl("UserName");
           sUser = tb.Text;
           user = Membership.GetUser(sUser);
           profil = Profile.GetProfile(sUser);

           if (profil.Loged == 1)
           {
               string failtext = "Duplicitné prihlásenie toho istého užívateľa nieje možné !!!";
               ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup('" + failtext + "');", true);
               lg.FailureText = failtext ;
               e.Cancel = true;
           }
           else
           {
               profil.Loged = 1;
               profil.Save();
           }
       }
   }

a zas pri odhlaseni

protected void HeadLoginStatus_LoggingOut(object sender, LoginCancelEventArgs e)
 {
     Profile.Loged = 0;
     Profile.Save();
 }

Je to pekne ale nefunguje to uplne ako ma ak napriklad na tom istom stroji odhlasim jedneho uzivatela napr. v chrome tak sa mi odloguje aj iný user nalogovany vo Firefoxe. Čomu nerozumiem. Nehovorim o tom ze ked zrusim okno prehliadaca tak som v keli.

Chcem to riesit cez session ale nerozumiem ako to presne funguje a uz vobec netusim ako to to mam nakodovat aby to fungovalo s altaris SimpleSqlMember­shipProvider.
Viete poradit ?

 
Odpovědět 9. května 18:07
Avatar
klanduch
Člen
Avatar
Odpovídá na klanduch
klanduch:

Na chybičku odhlásenia uzivatela na jednom stroji som prisiel.
Nechtiac som urobil preklep v nastavení

<membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="20" >

Omylom som tam nastavil "1".

Uz len ostáva problém s tým ked si uzivatel zrusi okno prehliadaca bez predchadzajuceho odhlasenia, alebo skoncenia sedenia userIsOnlineTi­meWindow="20" po 20 minutach.
Ten cas nastavenia odhlasenia userIsOnlineTi­meWindow sa predpokladam pocita z dateLastActivity.

 
Nahoru Odpovědět 9. května 20:14
Avatar
klanduch
Člen
Avatar
Odpovídá na klanduch
klanduch:

Do profilu si ukladám aj

profil.Session = Session.Sessi­onID.ToString();

Ale zatial neviem ako pouzit dalej.

Do global.asax som pridal

protected void Session_End(Object sender, EventArgs e)
  {
      Profile.LogedIn = 0;
      Profile.Session = null;
      Profile.Save();
  }

A nefunguje lebo po aktivovaní (po 20min) uz nepozna profil a vznikne chyba aj ked sa uz v prehliadaci nezobrazi.

 
Nahoru Odpovědět 9. května 20:59
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.