explaingit

heeexy/springboot-shiro-vue

4,671JavaAudience · developerComplexity · 3/5Setup · moderate

TLDR

A reference implementation for a permission management system with a Spring Boot backend and Vue frontend, where security checks use fine-grained permissions rather than roles, and the UI shows only what each user is allowed to see.

Mindmap

mindmap
  root((springboot-shiro-vue))
    What it does
      Permission management
      Role bundles permissions
      Dynamic menu building
      Button visibility control
    Tech Stack
      Java Spring Boot
      Vue frontend
      AOP annotation
      Token auth
    Use Cases
      Learning reference
      Full-stack starter
      Admin panel base
    Audience
      Java developers
      Vue developers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a web app where each user sees only the menus and action buttons their account is permitted to access.

USE CASE 2

Create a backend API that checks individual permissions per endpoint rather than checking broad user roles.

USE CASE 3

Learn how to separate frontend button visibility from backend API protection in a Java and Vue project.

Tech stack

JavaSpring BootVueAOPJWT

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires running a Java Spring Boot server and a Vue frontend dev server separately.

In plain English

This project is a reference implementation for building a permission management system using Spring Boot on the backend and Vue on the frontend. The README is written in Chinese, but the concept it demonstrates is straightforward: every user in the application can be assigned a set of fine-grained permissions, and both the server and the browser enforce those permissions independently. On the backend, the core idea is that API endpoints check for specific permissions rather than checking what role a user holds. A role (like "admin" or "editor") is just a convenient way to bundle permissions together when setting up accounts, but the actual security check at each endpoint only asks "does this user have the required permission?" not "does this user hold the right role?" This separation makes the system simpler to reason about and easier to extend. On the frontend, after a user logs in the server sends back two lists: the menus this person is allowed to see, and the specific actions (like add, delete, or edit buttons) they are allowed to perform. The Vue application uses these lists to build the navigation dynamically and to show or hide individual buttons on each page. A user who lacks the "article:add" permission simply never sees the button that would let them add an article. Version 2 of the project removed the third-party Shiro security library and replaced it with a custom annotation plus AOP (a Spring feature for applying cross-cutting logic), which reduced the configuration overhead. Authentication now uses tokens instead of server-side sessions, which avoids cross-origin issues common in separated frontend and backend setups. The project provides working backend code in a folder called "back" and frontend code in a folder called "vue". It is intended as a learning reference and starting point rather than a production-ready framework.

Copy-paste prompts

Prompt 1
I'm using the springboot-shiro-vue architecture. How do I add a new permission called 'report:export' and assign it to the editor role in Spring Boot?
Prompt 2
Using springboot-shiro-vue as a reference, write a Vue component that shows or hides an Add Article button based on whether the logged-in user has the 'article:add' permission.
Prompt 3
Explain the AOP annotation approach in springboot-shiro-vue v2 that checks permissions without Shiro. Show me how to apply it to a new REST endpoint.
Prompt 4
How does token-based auth replace server-side sessions in springboot-shiro-vue, and how do I handle token refresh on the Vue side?
Open on GitHub → Explain another repo

← heeexy on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.