我有一个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);
}
我甚至不确定在登录过程中是否发生了这种情况。当用户更新密码时,也可能发生这种情况。如果有人认为它更有可能在那里发生,我也可以提供该代码。