我们有一个DAT文件上传选项。我们在web.config中模仿了。
<identity impersonate="true"/>
我们已授予对用户所属用户组的文件夹(上载datfile的文件夹)的完全控制权。我们有多个用户组。当一个组的用户上传文件时,他们会收到未经授权的错误。以下是逻辑。当发生回发时,他们没有被授权。
是否是由于模仿?
这可能是什么原因?
是否由于应用程序池重启?
注意:其他群组用户可以成功上传文件。
注意:我们使用的是IIS 7.启用了ASP.NET模拟和Windows身份验证。
public bool IsInRole(string ThisRole)
{
bool validUser = false;
WindowsIdentity currentUser = WindowsIdentity.GetCurrent();
WindowsPrincipal MyPrincipal = new WindowsPrincipal(currentUser);
Logging.Log("User : " + currentUser.Name.ToString() + " Role: " + ThisRole.ToString() + " Identity: " + MyPrincipal.Identity.ToString() + " -Authendication Started", LogParameters.LogType.Info);
if (MyPrincipal.IsInRole(ThisRole))
{
Logging.Log("User : " + currentUser.Name.ToString() + " Role: " + ThisRole.ToString() + " Identity: " + MyPrincipal.Identity.ToString() + " -Authendication Sucessful", LogParameters.LogType.Info);
validUser = true;
Session["UserID"] = MyPrincipal.Identity.Name.ToString();
}
else
{
Logging.Log("User : " + currentUser.Name.ToString() + " Role: " + ThisRole.ToString() + " Identity: " + MyPrincipal.Identity.ToString() + "Authendication Failed", LogParameters.LogType.Info);
}
return validUser;
}
string[] keys = ConfigurationManager.AppSettings.AllKeys;
string value = string.Empty;
AppSettingsReader reader = new AppSettingsReader();
for (int i = 0; i < keys.Length; i++)
{
value = (String)reader.GetValue(keys[i], value.GetType()).ToString().Replace(":", "").Replace(",", "");
if (!IsPostBack)
{
bool isUserInRole = false;
try
{
isUserInRole = IsInRole(value);
}
catch
{
Response.Redirect("~/Error/Error.aspx?Message=Unauthorized");
}
if (isUserInRole)
{
Session["LastVisitTime"] = DateTime.Now.ToString();
break;
}
}
else
{
if (Session["UserID"] == null)
{
NoAccess();
break;
}
else break;
}
if (i == keys.Length - 1)
Response.Redirect("~/Error/Error.aspx?Message=Unauthorized");
}