通过Active Directory进行身份验证正在创建C:\ Users文件夹

时间:2017-08-07 15:19:37

标签: asp.net active-directory

我有一个ASP.NET MVC应用程序,它使用Active Directory对用户进行身份验证。 用户可以登录我们的网站查看匿名用户隐藏的页面,还可以更改他们的AD密码和电子邮件地址。

网络服务器团队告诉我,我们的网站正在为服务器上的用户创建文件夹。

在C:\ Users \ username \下,它为每个登录的人创建桌面,文档,下载,图片等文件夹。我们不需要这些文件夹,并且不是意识到他们正在被创造。

我为此所做的所有搜索似乎都会为想要进行模拟的人提供结果,并允许用户以某种方式保存或访问这些文件夹,这与我想要的相反。我的代码库中没有看到任何使用模拟的内容(我甚至不确定是否会自动创建这些文件夹)。

这是Login Post操作的代码。是否有任何一个在服务器上创建用户目录的效果,还是完全是另一回事?如果我们无法停止创建文件夹,是否有一种删除它们的好方法?

    /// <summary>
    /// Login POST
    /// </summary>
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login([Bind(Include = "UserName,Password,IsValidUser")]LoginModel model, string returnUrl)
    {
        string sUserDomain = model.UserName.Substring(0, model.UserName.IndexOf("\\"));
        string sUserName = model.UserName.Substring(model.UserName.IndexOf("\\") + 1);

        string [] parts = model.UserName.Split('\\');
        sUserDomain = parts[0];
        sUserName = parts[1];

        if (!this.ModelState.IsValid)
        {
            return this.View(model);
        }
        bool bValue = Membership.ValidateUser(model.UserName, model.Password);
        MembershipUser User = Membership.GetUser(model.UserName);

        IntPtr token = IntPtr.Zero;
        if (LogonUser(sUserName, sUserDomain, model.Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out token) != 0)
        {
            if (IsValidUser(model))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, false);

                if (this.Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return this.Redirect(returnUrl);
                }

                return this.RedirectToAction("Index", "Home");
            }

            this.ModelState.AddModelError(string.Empty, "The user name or password provided is incorrect.");
        }
        else
        {
            //System Error Codes
            //http://msdn.microsoft.com/en-us/library/ms681381%28v=vs.85%29.aspx
            //1907 = The user's password must be changed before logging on the first time.
            //1909 = The account has been locked.
            //1330 = Password has expired.
            int error = Marshal.GetLastWin32Error();
            if (((error == 1907) || (error == 1330)) && (sUserDomain.ToUpper() == "EXTLCL"))
            {
                return RedirectToAction("ChangePasswordBeforeLogin", "Account");
            }
            else if (error == 1909)
            {
                this.ModelState.AddModelError(string.Empty, "This account has been locked.");
            }
            else
            {
                this.ModelState.AddModelError(string.Empty, "The user name or password provided is incorrect.");
            }
        }

        return this.View(model);
    }

我甚至不确定在登录过程中是否发生了这种情况。当用户更新密码时,也可能发生这种情况。如果有人认为它更有可能在那里发生,我也可以提供该代码。

0 个答案:

没有答案
相关问题