Setting the path_filter and show_files_listing, but list page still show all files.
- 主要語言
- Rust
- 星號
- 24.8k
- 分支
- 1.9k
- 平均合併
- 23 小時 10 分鐘
- 30 天內合併 PR
- 26
描述
```rs
Files::new("/", EXAMPLES_DIR)
.path_filter(|n, _| {
println!("{:?}", n);
let s = n.to_str().unwrap();
if s == "lib.rs" || s == "" {
true
} else {
false
}
})
.show_files_listing(),
```
## Expected Behavior
Only display the files that pass the filter, as in the example above, only the lib.rs file should be displayed.
## Current Behavior

Display all files, but only those passed by the filter can be accessed.
## Possible Solution
Add a filter parameter to the DirectoryRenderer function, or add a filter field to the Directory.
## Steps to Reproduce (for bugs)
```rs
use actix_files::Files;
use actix_web::{get, guard, middleware, App, HttpServer, Responder};
const EXAMPLES_DIR: &str = concat![env!("CARGO_MANIFEST_DIR"), "/src"];
#[actix_web::main]
async fn main() -> std::io::Result<()> {
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
log::info!("starting HTTP server at http://localhost:8080");
HttpServer::new(|| {
App::new()
.service(
Files::new("/", EXAMPLES_DIR)
.path_filter(|n, _| {
println!("{:?}", n);
let s = n.to_str().unwrap();
if s == "lib.rs" || s == "" {
true
} else {
false
}
})
.show_files_listing(),
)
.wrap(middleware::Logger::default())
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
```
## Context
When I set a filter, it indicates that I don't want users to be aware of the existence of certain files. However, these files are still displayed on the list page and are inaccessible, which can confuse users.
## Your Environment
- Rust Version (I.e, output of `rustc -V`): rustc 1.76.0-nightly (1e9dda77b 2023-11-22)
- Actix Web Version: e95c8fe5a6d466ba674ea2ea35c0c4d18e1bb9d0
貢獻指南
研究方向
The reproduction uses Files::new with path_filter and show_files_listing; start by running it, then trace the directory-listing path through DirectoryRenderer and Directory. Done means the listing omits files rejected by path_filter while access behavior remains consistent with that filter.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- rust
- 領域
- backend
- Issue 類型
- 缺陷
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 活躍度
- 活躍
- 描述清晰度
- 基本清楚
- 新手友好度
- 68/100