asp.net訪問網路路徑方法(類比使用者登入),asp.net使用者登入
核心代碼:
public class IdentityScope : IDisposable{ // obtains user token [DllImport("advapi32.dll", 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 ImpersonateLoggedOnUser(IntPtr hToken); [DllImport("Advapi32.DLL")] static extern bool RevertToSelf(); const int LOGON32_PROVIDER_DEFAULT = 0; const int LOGON32_LOGON_NEWCREDENTIALS = 9;//域ò控?中D的?需è要a用?:Interactive = 2 private bool disposed; /// /// 登?錄? /// /// 用?戶§名? /// 域ò名?,?如?果?不?在ú域ò中D就í使1用?機ú器÷IP地?址· /// 密ü碼? 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,LOGON32_LOGON_NEWCREDENTIALS, 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); } }
第二個參數是網域名稱,有網域名稱的話寫網域名稱,沒有網域名稱寫目標機器的IP就可以了
using (IdentityScope c = new IdentityScope("administrator", "192.168.0.1", "11111")){ string[] filelist = System.IO.Directory.GetDirectories(@"\\192.168.0.1\folderName");}
aspnet的類比使用者登入問題
在web.config裡配置一下就可以了
aspnet相關,使用者已登入,怎防止通過複製某功可以頁路徑的方式,訪問他沒有許可權訪問的頁面,我使用了母片
你可以試試製作一個表,儲存頁面名稱,一個儲存使用者,然後另外一個關係表,頁面編號和使用者編號
http://www.bkjia.com/PHPjc/865253.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/865253.htmlTechArticleasp.net訪問網路路徑方法(類比使用者登入),asp.net使用者登入 核心代碼: public class IdentityScope : IDisposable{ // obtains user token [DllImport("advapi32.dll",...