shiro权限管理mysql_使用 Shiro 设计基于用户、角色、权限的通用权限管理系统

一、前言

在大型的信息管理系统中,经常涉及到权限管理系统

下面来个 demo,很多复杂的系统的设计都来自它

代码已经放到github上了,地址:https://github.com/larger5/shiro_urp.git

2018.4.3 版本0.5 在 SpringBoot 中使用 Shiro+MySQL 做登录拦截

2018.4.6 版本1.0 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统

以后继续更新,如用户、角色、权限 CRUD 等,真正做到所谓的权限管理系统

二、数据库表的设计

下面使用 SpringBoot + JPA 的,自动生成如下的表

用户角色多对多、角色权限多对多,设计一个通用的权限系统(无论初衷是一个用户多个角色还是一个角色)

三、效果

说明:

①UI:

使用了 LayUI 简单优化一下界面

②角色所含权限:

p:select

ip:select、insert

vip:select、insert、update、delete

③权限:

select

insert

update

delete

以使用 itaem (VIP)为例

图解:

有:① select、insert、update、delete 权限 ② vip 角色

无:ip角色、p角色,点击后都是没有反应的

四、代码(github 平台上看)

① Controller(重点)

package com.cun.controller;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpSession;

import javax.validation.Valid;

import org.apache.shiro.SecurityUtils;

import org.apache.shiro.authc.UsernamePasswordToken;

import org.apache.shiro.authz.annotation.RequiresPermissions;

import org.apache.shiro.authz.annotation.RequiresRoles;

import org.apache.shiro.subject.Subject;

import org.springframework.validation.BindingResult;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import com.cun.entity.User;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2

@RestController

@RequestMapping("/user")

public class UserController {

@PostMapping("/login")

public Map login(@Valid User user, BindingResult bindingResult, HttpSession session) {

Map map = new HashMap();

// 1、JSR303

if (bindingResult.hasErrors()) {

map.put("success", false);

map.put("errorInfo", bindingResult.getFieldError().getDefaultMessage());

return map;

}

// 2、Shiro

Subject subject = SecurityUtils.getSubject();

UsernamePasswordToken token = new UsernamePasswordToken(user.getUserName(), user.getPassword());

try {

subject.login(token);

map.put("success", true);

return map;

} catch (Exception e) {

e.printStackTrace();

map.put("success", false);

map.put("errorInfo", "用户名或者密码错误!");

return map;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值