NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Stano Klanduch:9.5.2016 18:07

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.5.2016 18:07
Avatar
Odpovídá na Stano Klanduch
Stano Klanduch:9.5.2016 20:14

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.5.2016 20:14
Avatar
Odpovídá na Stano Klanduch
Stano Klanduch:9.5.2016 20:59

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.5.2016 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.