文件上载后授权失败:ASP.NET

时间:2011-11-15 09:25:40

标签: c# asp.net .net vb.net iis-7

我们有一个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");
        }

0 个答案:

没有答案