{"adoption": {"forks": 3836, "observed_at": "2026-08-28T04:08:59.347230+00:00", "stars": 4769}, "canonical_url": "https://ross.abutalabs.com/products/shiro-example", "card": {"archived": false, "artifact_type": "learning-resource", "description": "跟我学Shiro（我的公众号：kaitao-1234567，我的新书：《亿级流量网站架构核心技术》） ", "domain": ["security", "tutorials", "web-development"], "enriched": true, "function": ["auth", "authorization", "security", "developer-tools"], "health_score": 20, "homepage": null, "language": "HTML", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["zhangkaitao/shiro-example"], "name": "zhangkaitao/shiro-example", "platform": ["jvm"], "pushed_at": "2021-09-01T06:23:31+00:00", "repo": "zhangkaitao/shiro-example", "stars": 4769, "tags": ["apache-shiro", "tutorial", "examples", "authentication", "spring-integration", "sso", "oauth2", "java"], "topics": ["shiro"], "urls": [], "use_cases": ["learn apache shiro authentication and authorization", "shiro spring integration examples", "implement single sign-on with shiro", "shiro oauth2 integration example", "understand shiro session management and caching", "dynamic url permission control with shiro", "shiro rememberme and captcha examples"], "what_it_is": "A collection of example code accompanying the Chinese tutorial series 'Learn Shiro with Me' (跟我学Shiro), covering Apache Shiro authentication, authorization, session management, and integrations with Spring, Web, SSO, and OAuth2. It serves as a hands-on learning companion with chapter-by-chapter sample projects.", "when_to_avoid": ["you need a production-ready security framework rather than tutorial code", "you use Spring Security or another stack instead of Shiro", "you need actively maintained, up-to-date examples (last updated 2021, no license)"], "when_to_choose": ["learning Apache Shiro from scratch with runnable chapter examples", "looking for reference code for Shiro features like SSO, OAuth2, or distributed sessions", "following the accompanying Chinese blog tutorial series"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/shiro-example", "repo": "zhangkaitao/shiro-example", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "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:59.347230+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.347230+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:18:49.341599+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a0136d90b7ddded280adb512223f026dc9a24d21859d19034e1a0f813ef05e76", "fetched_at": "2026-08-28T04:08:59.347230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhangkaitao/shiro-example"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4602, "days_push": 1827, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}