Vra

Ek het'n hoof asp.net app, wat is geskryf in asp.net 1.1.Runnning onder die aansoek is verskeie 2.0-toepassings.Om heeltemal logout'n gebruiker kan ek net teken uit van die 1.1 app met FormsAuthentication.SignOut of is dit meer ingewikkeld as wat?

Was dit nuttig?

Oplossing

Wat jy op soek is om te doen, is genoem Enkele Teken Op en Enkele Teken Af.Daar is verskille wat gebaseer is op hoe jy die aansoeke opgestel.Ek sal probeer om te verduidelik waar die verskille in die spel kom.

Te implementeer enkele teken op en enkele teken af wat jy nodig het om te maak die koekie naam, beskerming, en die pad eienskappe van die dieselfde tussen al die aansoeke.

<authentication mode="Forms">
    <forms name=".cookiename"
           loginUrl="~/Login.aspx" 
           timeout="30" 
           path="/" />
</authentication>

Volgende wat jy nodig het om te voeg die masjien sleutels en wat hulle nodig het om dieselfde te wees tussen al jou programme.

<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902"
            encryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"
            validation="SHA1" />

Is jy met behulp van tweede of derde vlak domeine vir die aansoeke?As dit so is, sal jy nodig het om te doen'n bietjie meer deur die toevoeging van die domein van die koekie:

protected void Login(string userName, string password)
{
    System.Web.HttpCookie cookie = FormsAuthentication.GetAuthCookie(userName, False);
    cookie.Domain = "domain1.com";
    cookie.Expires = DateTime.Now.AddDays(30);
    Response.AppendCookie(cookie);
}

Nou om dit te doen enkele teken af, die roeping van FormsAuthentication.SignOut mag nie genoeg wees nie.Die volgende beste ding is om die koekie verstryking van'n verlede datum.Dit sal verseker dat die koekie sal nie weer gebruik word vir verifikasie.

protected void Logout(string userName)
{
    System.Web.HttpCookie cookie = FormsAuthentication.GetAuthCookie(userName, False);
    cookie.Domain = "domain1.com";
    cookie.Expires = DateTime.Now.AddDays(-1);
    Response.AppendCookie(cookie);
}

Ek neem in ag wat jy gebruik dieselfde databasis vir al die aansoeke.Indien die aansoeke gebruik'n aparte databasis vir die registrasie en verifikasie, dan sal ons nodig het om te doen'n paar meer.Laat my net weet as dit die geval is.Anders moet werk vir jou.

Ander wenke

Dit kan makliker wees as jy met 'n sentrale sessie winkel vir al jou programme. Jy kan dan stel die sessie aan nul in een plek.

Dit werk vir my:

In die Logout gebeurtenis, in plaas van FormsAuthentication.GetAuthCookie metode gebruik koekies versameling in voorwerp Versoek soos hieronder:

HttpCookie cookie = Request.Cookies.Get(otherSiteCookieName);
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookie);

Natuurlik, dit verg u weet die koekie naam van die webwerf (s) wat jy wil die gebruiker word uitgeteken -. Wat egter nie 'n probleem sal wees as jy met behulp van dieselfde koekie oor al die web programme

Ek verkies om Web.config gebruik

<authentication mode="Forms">
    <forms domain=".tv.loc" loginUrl="~/signin" timeout="2880" name="auth" />
</authentication>
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top