HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Bejelentkezés egy másik felhasználó adataival programból


Példaprogram letöltése

8580 bájt

Ahhoz, hogy alkalmazásunk bizonyos műveleteket képes legyen elvégezni, rendelkeznünk kell a megfelelő jogokkal. Elképzelhető olyan eset, hogy felhasználói fiókunk nem tesz lehetővé bizonyos műveletet. Ekkor megoldható az, hogy más felhasználó nevével, jelszavával programból elvégezzük a bejelentkezést arra az időre míg a szükséges művelet végre nem hajtjuk. Jó példa erre egy olyan alkalmazást, melyet csak a Felhasználók csoportjába tartozó személyek használnak, de programunknak bizonyos esetekben olyan funkciót kellene elvégeznie, melyekhez rendszergazdai jogok szükségesek. A programból történő bejelentkezést a felhasználónk észre sem fogja venni, hacsak erre külön nem készítjük fel az alkalmazást, így a jelszavunkat is biztonságban tudhatjuk, valamint attól sem kell tartanunk, hogy ez idő alatt a felhasználó más alkalmazásokban is rendszergazdai jogokkal rendelkezik, mivel ez csak arra a programra lesz érvényes, melyet éppen használ, amelyben ezt leprogramoztuk.

A megvalósításhoz el kell majd érnünk a LogonUser nevű Windows függvényt, mely az Advapi32.dll-ben található. Ehhez készítünk egy Win32 osztályt, melyben megadjuk ezt a függvényt külsőként deklarálva.
    [DllImport("advapi32.dll")]
    public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out int phToken);
Most már csak annyi a teendőnk, hogy meghívjuk ezt a függvényt érvényes bejelentkezési adatokkal. A függvény első paramétere egy felhasználói nevet vár, a másodikba annak gépnek az azonosítója kerül, ahová be szeretnénk jelentkezni. Ezt sajátgép esetén egy ponttal is jelölhetjük. Harmadik paraméterben a felhasználóhoz tartozó jelszót kell megadni.
        int token = 0;
        Win32.LogonUser(textBox1.Text, ".", textBox2.Text, Win32.LOGON32_LOGON_NETWORK, Win32.LOGON32_PROVIDER_DEFAULT, out token);
A LogonUser függvény utolsó paraméterében megadott változóba kapunk vissza egy azonosítót. Ezt felhasználva tudunk egy WindowsIdentity osztályt létrehozni, melynek Impersonate függvénye egy WindowsImpersonationContext osztály példányát adja vissza. Ennek az osztálynak több property-je is van, mely információt szolgáltat számunkra arról, hogy ki is az aktuálisan hitelesített felhasználó.
        WindowsIdentity wi = new WindowsIdentity((IntPtr)token);
        WindowsImpersonationContext wic = wi.Impersonate();
        listBox1.Items.Add("Name: " + wi.Name); 
        listBox1.Items.Add("AuthenticationType: "  + wi.AuthenticationType); 
        ...
A bejelentkezést megszüntethetjük a WindowsImpersonationContext osztály Undo függvényét meghívva.
        wic.Undo();

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 469. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |