Как разрешить пользователям добавлять файлы в пользовательские папки в ASP.NET веб-формы
Я создал Ан ASP.Net приложение веб-форм с использованием ASP.Net шаблон веб-форм по умолчанию. Я добавил страницу aspx под названием "Tool.aspx", где пользователь может добавлять файлы в назначенные им папки одним нажатием кнопки. Эта страница Tool.aspx может быть доступна только после того, как пользователь вошел в систему. Я назначил отдельные папки отдельным пользователям, добавив некоторый код на страницу Register.aspx по умолчанию.
Как сделать так, чтобы пользователь мог получить доступ только к назначенным ему папкам со страницы Tool.aspx?
Должен ли я передавать учетные данные пользователя из Login.aspx? Если да, то как?
Это код, который у меня есть в Register.aspx.cs :
protected void CreateUser_Click(object sender, EventArgs e) { var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var signInManager = Context.GetOwinContext().Get<ApplicationSignInManager>(); var user = new ApplicationUser() { UserName = Email.Text, Email = Email.Text }; IdentityResult result = manager.Create(user, Password.Text); if (result.Succeeded) { // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 //string code = manager.GenerateEmailConfirmationToken(user.Id); //string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request); //manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>."); signInManager.SignIn( user, isPersistent: false, rememberBrowser: false); IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); userfilefolder = "~/" + user.UserName + "Files"; if (!Directory.Exists(userfilefolder)) { Directory.CreateDirectory(userfilefolder); } userimages = Path.Combine(userfilefolder, "/images"); userpdfs = Path.Combine(userfilefolder, "/pdfs"); Directory.CreateDirectory(userimages); Directory.CreateDirectory(userpdfs); AddDirectorySecurity(userfilefolder, Convert.ToString(result), FileSystemRights.ReadData, AccessControlType.Allow); AddDirectorySecurity(userimages, Convert.ToString(result), FileSystemRights.ReadData, AccessControlType.Allow); AddDirectorySecurity(userpdfs, Convert.ToString(result), FileSystemRights.ReadData, AccessControlType.Allow); } else { ErrorMessage.Text = result.Errors.FirstOrDefault(); } } public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType) { // Create a new DirectoryInfo object. DirectoryInfo dInfo = new DirectoryInfo(FileName); // Get a DirectorySecurity object that represents the // current security settings. DirectorySecurity dSecurity = dInfo.GetAccessControl(); // Add the FileSystemAccessRule to the security settings. dSecurity.AddAccessRule(new FileSystemAccessRule(Account, Rights, ControlType)); // Set the new access settings. dInfo.SetAccessControl(dSecurity); }
Что я уже пробовал:
Я пробовал использовать общие папки, но я не хочу, чтобы пользователи случайно связывались с файлами других пользователей.
MadMyche
Как только они войдут в систему и у вас будет их имя пользователя в сеансе, вы должны знать, где находятся все папки, так как вы создали имена папок