Asp.net access network path (simulated user logon), asp.net User Logon
Core code:
Public class IdentityScope: IDisposable {// obtains user token [DllImport ("failed", SetLastError = true)] static extern bool LogonUser (string pszUsername, string pszDomain, string pszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); // closes open handes returned by LogonUser [DllImport ("kernel32.dll", CharSet = CharSet. auto)] extern static bool CloseHandle (IntPtr handle ); [DllImport ("Advapi32.DLL")] static extern bool token (IntPtr hToken); [DllImport ("Advapi32.DLL")] static extern bool RevertToSelf (); const int token = 0; const int LOGON32_LOGON_NEWCREDENTIALS = 9; // What is the domain risk control? In D? Do you want a to use?: Interactive = 2 private bool disposed; /// <summary> // login?? /// </Summary> /// <param name = "sUsername"> use? User § name? </Param> /// <param name = "sDomain"> domain alias name ?,? Such? Result? No? In the ú region, where is D used for 1? Host IP address? Address · </param> /// <param name = "sPassword"> password? </Param> public IdentityScope (string sUsername, string sDomain, string sPassword) {// initialize tokens IntPtr pExistingTokenHandle = new IntPtr (0); IntPtr pDuplicateTokenHandle = new IntPtr (0 ); try {// get handle to token bool bImpersonated = LogonUser (sUsername, sDomain, sPassword, login, LOGON32_PROVIDER_DEFAULT, ref pExistingTokenHandle); if (true = bImpersonated) {if (! ImpersonateLoggedOnUser (pExistingTokenHandle) {int nErrorCode = Marshal. getLastWin32Error (); throw new Exception ("ImpersonateLoggedOnUser error; Code =" + nErrorCode) ;}} else {int nErrorCode = Marshal. getLastWin32Error (); throw new Exception ("LogonUser error; Code =" + nErrorCode) ;}} finally {// close handle (s) if (pExistingTokenHandle! = IntPtr. Zero) CloseHandle (pExistingTokenHandle); if (pDuplicateTokenHandle! = IntPtr. Zero) CloseHandle (pDuplicateTokenHandle);} protected virtual void Dispose (bool disposing) {if (! Disposed) {RevertToSelf (); disposed = true ;}} public void Dispose () {Dispose (true );}}
The second parameter is the domain name. If there is a domain name, write the domain name. If there is no domain name, write the IP address of the target machine.
using (IdentityScope c = new IdentityScope("administrator", "192.168.0.1", "11111")){ string[] filelist = System.IO.Directory.GetDirectories(@"\\192.168.0.1\folderName");}
Aspnet simulated User Login Problems
Configure it in web. config.
<Identity impersonate = "true" userName = "Server userName" password = "server password"/>
Aspnet-related: the user has logged on. How can I prevent the user from accessing a page that he has no permission to access by copying a webpage path?
You can try to create a table, save the Page name, save the user, and then another relational table, page number and user number.