{"adoption": {"forks": 1761, "observed_at": "2026-08-28T04:08:55.697804+00:00", "stars": 4656}, "canonical_url": "https://ross.abutalabs.com/products/springboot-shiro-vue", "card": {"archived": false, "artifact_type": "framework", "description": "提供一套基于Spring Boot-Shiro-Vue的权限管理思路.前后端都加以控制,做到按钮/接口级别的权限。（当前新版本已移除shiro依赖，简化了配置）", "domain": ["web-development", "security", "backend", "developer-tools"], "enriched": true, "function": ["auth", "authorization", "web-framework", "middleware"], "health_score": 69, "homepage": null, "language": "Java", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Heeexy/SpringBoot-Shiro-Vue"], "name": "Heeexy/SpringBoot-Shiro-Vue", "platform": ["jvm", "self-hosted"], "pushed_at": "2026-05-07T06:53:39+00:00", "repo": "Heeexy/SpringBoot-Shiro-Vue", "stars": 4656, "tags": ["rbac", "spring-boot", "vue", "shiro", "permission-management", "admin-template", "token-authentication", "web-server"], "topics": ["springboot", "vue", "shiro", "permissions"], "urls": [], "use_cases": ["implement button and API level permission control in a Spring Boot app", "build an admin dashboard with role-based access control", "learn RBAC permission system design with Spring Boot and Vue", "hide menus and buttons based on user permissions in Vue", "replace Shiro with custom annotation-based permission checks", "token-based login without sessions to avoid CORS issues", "assign multiple roles and permissions to users"], "what_it_is": "A full-stack reference project demonstrating fine-grained RBAC permission management using Spring Boot on the backend and Vue with ElementUI on the frontend. It controls access down to the button and API level, with backend interfaces validating permissions (not roles) via custom annotations and AOP, and the frontend dynamically generating routes and hiding unauthorized menus and buttons.", "when_to_avoid": ["you need a production-ready, fully supported auth framework rather than a demo/reference project", "your stack is not Java/Spring Boot with a Vue frontend", "you need advanced features like OAuth2, SSO, or multi-tenancy out of the box"], "when_to_choose": ["you need a working reference implementation of fine-grained RBAC in a Spring Boot + Vue stack", "you want permission checks at both frontend UI and backend API level", "you prefer validating permissions rather than roles in backend interfaces"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/springboot-shiro-vue", "repo": "Heeexy/SpringBoot-Shiro-Vue", "role": "main", "score": 69}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.697804+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:28.274293+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b3327b417eaf7591a79cf6788e247d41155e80eac8c50bfa67a1ad4bda278412", "fetched_at": "2026-08-28T04:08:55.697804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Heeexy/SpringBoot-Shiro-Vue"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 81, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3211, "days_push": 118, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 69, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}