Home > Backend Development > PHP Tutorial > asp.net access network path method (simulating user login), asp.net user login_PHP tutorial

asp.net access network path method (simulating user login), asp.net user login_PHP tutorial

WBOY
Release: 2016-07-13 10:20:40
Original
1240 people have browsed it

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;
    /// <summary>
    /// 登&#63;录&#63;
    /// </summary>
    /// <param name="sUsername">用&#63;户§名&#63;</param>
    /// <param name="sDomain">域ò名&#63;,&#63;如&#63;果&#63;不&#63;在ú域ò中D就í使1用&#63;机ú器÷IP地&#63;址·</param>
    /// <param name="sPassword">密ü码&#63;</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,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);
    }
  }
Copy after login

第二个参数是域名,有域名的话写域名,没有域名写目标机器的IP就可以了

using (IdentityScope c = new IdentityScope("administrator", "192.168.0.1", "11111"))
{
 string[] filelist = System.IO.Directory.GetDirectories(@"\\192.168.0.1\folderName");
}
Copy after login

aspnet的模拟用户登录问题

在web.config里配置一下就可以了

 

aspnet相关,用户已登录,怎防止通过复制某功可以页路径的方式,访问他没有权限访问的页面,我使用了母版

你可以试试制作一个表,保存页面名称,一个保存用户,然后另外一个关系表,页面编号和用户编号
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/865253.htmlTechArticleasp.net访问网络路径方法(模拟用户登录),asp.net用户登录 核心代码: public class IdentityScope : IDisposable{ // obtains user token [DllImport("advapi32.dll",...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template