V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zhaojun1998
V2EX  ›  分享创造

分享一个 Shiro 权限管理系统,支持 HTTP Method 粒度的权限控制!

  •  1
     
  •   zhaojun1998 ·
    zhaojun1998 · 2019-05-20 09:11:39 +08:00 · 3703 次点击
    这是一个创建于 2015 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Shiro-Action

    Build Status https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square Codacy Badge https://img.shields.io/badge/springboot-2.0.6-orange.svg?style=flat-square https://img.shields.io/badge/apache%20shiro-1.4.0-green.svg?style=flat-square GitHub tag (latest SemVer)

    本项目使用 Spring Boot 搭建, 用于加深对 Spring Boot 与 Shiro 的学习, 项目特色是支持 restful 风格权限控制, 支持对同一 URL, 不同 HTTP Mehtod 的权限控制, 适用于更多的场景.

    项目地址: https://github.com/zhaojun1998/Shiro-Action

    预览地址: http://shiro.zhaojun.im/

    文档地址: http://docs.zhaojun.im/shiro/

    默认管理员账号: admin, 密码: 123456.

    普通用户账号: user, 密码: 123456.

    为了不影响其他人的浏览体验, 请尽量不要进行删除类的敏感操作. admin 为超级管理员, 自动拥有全部权限.

    快速开始

    下载项目

    git clone https://github.com/zhaojun1998/Shiro-Action.git
    

    导入项目

    使用自己的 IDE 导入, Eclipse 和 Intellij IDEA 均可.

    导入数据库

    创建数据库, 字符集选择 utf8, 排序规则选择 utf8_general_ci.

    然后导入 shiro_action.sql 到数据库中.

    配置文件

    打开 application.properties 修改 MySQLRedis 连接信息.

    spring.redis.host=127.0.0.1
    spring.redis.port=6379
    spring.cache.type=redis
    
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/shiro_action?useSSL=false&characterEncoding=UTF8
    

    启动项目

    在完成了上述步骤后,找到 ShiroActionApplication 启动类, 启动即可.

    启动后访问地址为: http://localhost:8080 , 用户名:admin, 密码:123456.

    系统预览

    技术选型

    前端

    后端

    • SpringBoot 2.0.6.RELEASE
    • Shiro 1.4.0
    • MyBatis 1.3.2
    • Druid 1.1.10
    • PageHelper 1.2.9
    • Shiro-Redis 3.2.3

    大家对此项目有什么建议和意见,都欢迎提出。

    14 条回复    2019-05-22 09:26:44 +08:00
    AnnieSWonderland
        1
    AnnieSWonderland  
       2019-05-20 09:59:55 +08:00
    登录不上去![]( http://picbed.owudo.cn/test.gif
    )
    zhaojun1998
        2
    zhaojun1998  
    OP
       2019-05-20 10:03:10 +08:00
    @AnnieSWonderland 清理下缓存,或换一个浏览器试试,我这测试可以登录
    AnnieSWonderland
        3
    AnnieSWonderland  
       2019-05-20 10:07:54 +08:00
    @zhaojun1998 =.=,第一次登录可以登录,然后我把所有用户强制下线后就登陆不了了,清除缓存也不行,但是隐身模式可以登录!!!
    zhaojun1998
        4
    zhaojun1998  
    OP
       2019-05-20 10:17:49 +08:00
    @AnnieSWonderland 这应该算 bug,我自己会复现下试试。我猜测应该是强制下线后,服务器标记 sessionId 不可用了,但浏览器还在 cookie 中留了 sessionId 导致的问题。
    AnnieSWonderland
        5
    AnnieSWonderland  
       2019-05-20 10:27:50 +08:00
    @zhaojun1998 看了下,只要在在线用户中将自己下线后就再也登录不上去了,但是不知道为啥就算我清理了所有的缓存依然登录不上去,cookie,storage...只有无痕模式可以
    zhaojun1998
        6
    zhaojun1998  
    OP
       2019-05-20 10:42:37 +08:00
    @AnnieSWonderland 嗯,我再排查下原因,晚上下班后解决。
    zsy979
        7
    zsy979  
       2019-05-20 10:54:39 +08:00
    最近刚用 Shiro 做了权限控制,来学习一下楼主的
    huguang3320
        8
    huguang3320  
       2019-05-20 10:57:39 +08:00
    已 down 帮顶
    zhaojun1998
        9
    zhaojun1998  
    OP
       2019-05-21 20:46:46 +08:00
    @AnnieSWonderland 老哥,如详细说下咋操作的吗,我这复现不了啊
    AnnieSWonderland
        10
    AnnieSWonderland  
       2019-05-22 09:00:46 +08:00
    @zhaojun1998 电脑有点卡,录得有点卡 ![]( http://picbed.owudo.cn/test.gif)
    AnnieSWonderland
        11
    AnnieSWonderland  
       2019-05-22 09:05:11 +08:00
    @zhaojun1998 上面那个图片发错了,重发一个 ![]( http://picbed.owudo.cn/testlogin.gif)
    zhaojun1998
        12
    zhaojun1998  
    OP
       2019-05-22 09:07:52 +08:00
    @AnnieSWonderland ok 我复现成功了,我看看到底什么导致的。
    kylix
        13
    kylix  
       2019-05-22 09:19:42 +08:00
    感谢分享,mark 一下
    zhaojun1998
        14
    zhaojun1998  
    OP
       2019-05-22 09:26:44 +08:00
    @AnnieSWonderland 找到原因了,是我 nginx 反向代理的问题。加上 nginx 反代就会出现这个问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2749 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:13 · PVG 14:13 · LAX 22:13 · JFK 01:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.