Go to file
千石 c64f899a63
feat: implement session management (#9286)
* feat(auth): Added device session management

- Added the `handleSession` function to manage user device sessions and verify client identity
- Updated `auth.go` to call `handleSession` for device handling when a user logs in
- Added the `Session` model to database migrations
- Added `device.go` and `session.go` files to handle device session logic
- Updated `settings.go` to add device-related configuration items, such as the maximum number of devices, device eviction policy, and session TTL

* feat(session): Adds session management features

- Added `SessionInactive` error type in `device.go`
- Added session-related APIs in `router.go` to support listing and evicting sessions
- Added `ListSessionsByUser`, `ListSessions`, and `MarkInactive` methods in `session.go`
- Returns an appropriate error when the session state is `SessionInactive`

* feat(auth): Marks the device session as invalid.

- Import the `session` package into the `auth` module to handle device session status.
- Add a check in the login logic. If `device_key` is obtained, call `session.MarkInactive` to mark the device session as invalid.
- Store the invalid status in the context variable `session_inactive` for subsequent middleware checks.
- Add a check in the session refresh logic to abort the process if the current session has been marked invalid.

* feat(auth, session): Added device information processing and session management changes

- Updated device handling logic in `auth.go` to pass user agent and IP information
- Adjusted database queries in `session.go` to optimize session query fields and add `user_agent` and `ip` fields
- Modified the `Handle` method to add `ua` and `ip` parameters to store the user agent and IP address
- Added the `SessionResp` structure to return a session response containing `user_agent` and `ip`
- Updated the `/admin/user/create` and `/webdav` endpoints to pass the user agent and IP address to the device handler
2025-08-25 19:46:38 +08:00
.github fix: resolve webdav decode issue (#9268) 2025-08-16 20:55:17 +08:00
cmd refactor(convert_role): Improve role conversion logic for legacy formats (#9219) 2025-07-26 15:20:08 +08:00
drivers fix(lanzou): correct comment parsing logic in lanzou driver (#9278) 2025-08-19 00:53:52 +08:00
internal feat: implement session management (#9286) 2025-08-25 19:46:38 +08:00
pkg feat: implement session management (#9286) 2025-08-25 19:46:38 +08:00
public fix: embed all files of dist 2024-02-03 19:44:50 +08:00
server feat: implement session management (#9286) 2025-08-25 19:46:38 +08:00
wrapper feat: add `windows/arm64` target (close #3308) 2023-02-09 19:52:40 +08:00
.air.toml feat: add doge driver (#6201) 2024-03-25 22:53:44 +08:00
.gitignore feat: add doge driver (#6201) 2024-03-25 22:53:44 +08:00
CODE_OF_CONDUCT.md docs: Create CODE_OF_CONDUCT.md [skip ci] 2022-09-10 22:23:05 +08:00
CONTRIBUTING.md docs: update go version 2023-07-27 18:32:33 +08:00
Dockerfile fix(docker_release): avoid duplicate occupation in docker image (#8393 close #8388) 2025-04-19 14:26:19 +08:00
Dockerfile.ci Update Dockerfile.ci (#9230) 2025-07-29 18:35:47 +08:00
LICENSE chore: add windows bin to gitignore 2022-04-18 18:31:10 +08:00
README.md docs(README): Add API documentation links across multiple languages (#9225) 2025-07-29 09:42:34 +08:00
README_cn.md docs(README): Add API documentation links across multiple languages (#9225) 2025-07-29 09:42:34 +08:00
README_ja.md docs(README): Add API documentation links across multiple languages (#9225) 2025-07-29 09:42:34 +08:00
build.sh fix: dead link 2025-06-27 23:58:52 +08:00
docker-compose.yml feat!: listen to both http & https (#4536) 2023-06-11 18:17:37 +08:00
entrypoint.sh fix: shebang of entrypoint.sh (#8408) 2025-04-27 19:56:34 +08:00
go.mod chore(deps): Upgrade 115driver to v1.1.1 (#9283) 2025-08-25 19:46:10 +08:00
go.sum chore(deps): Upgrade 115driver to v1.1.1 (#9283) 2025-08-25 19:46:10 +08:00
main.go feat: use cobra and add some command 2022-08-07 13:09:59 +08:00
renovate.json fix(deps): update dependencies by renovate[bot] (#2344) 2022-11-17 08:49:15 +08:00

README.md

logo

🗂️A file list program that supports multiple storages, powered by Gin and Solidjs.


English | 中文 | 日本語 | Contributing | CODE_OF_CONDUCT

Features

Document

https://alistgo.com/

API Documentation (via Apifox):

https://alist-public.apifox.cn/

Demo

https://al.nn.ci

Discussion

Please go to our discussion forum for general questions, issues are for bug reports and feature requests only.

Sponsor

AList is an open-source software, if you happen to like this project and want me to keep going, please consider sponsoring me or providing a single donation! Thanks for all the love and support: https://alistgo.com/guide/sponsor.html

Special sponsors

  • VidHub - An elegant cloud video player within the Apple ecosystem. Support for iPhone, iPad, Mac, and Apple TV.
  • 亚洲云 - 高防服务器|服务器租用|福州高防|广东电信|香港服务器|美国服务器|海外服务器 - 国内靠谱的企业级云计算服务提供商 (sponsored Chinese API server)
  • 找资源 - 阿里云盘资源搜索引擎

Contributors

Thanks goes to these wonderful people:

Contributors

License

The AList is open-source software licensed under the AGPL-3.0 license.

Disclaimer

  • This program is a free and open source project. It is designed to share files on the network disk, which is convenient for downloading and learning Golang. Please abide by relevant laws and regulations when using it, and do not abuse it;
  • This program is implemented by calling the official sdk/interface, without destroying the official interface behavior;
  • This program only does 302 redirect/traffic forwarding, and does not intercept, store, or tamper with any user data;
  • Before using this program, you should understand and bear the corresponding risks, including but not limited to account ban, download speed limit, etc., which is none of this program's business;
  • If there is any infringement, please contact me by email, and it will be dealt with in time.

@GitHub · @TelegramGroup · @Discord