springboot 权限控制

2018-11-14 15:34:44 +08:00
 zhangmengyu

springboot 框架,请问大佬都是怎样实现权限控制的?是基于 Shiro 安全框架或者 Spring Security 安全框架或者是其他方式?哪种方式较为轻便?配合 springboot 更适合?

5022 次点击
所在节点    Java
17 条回复
jx99
2018-11-14 15:40:51 +08:00
我用 spring security,据说跟 Shiro 对比,security 会稍微复杂一点,不过我没用过 Shiro 不知道到底对比如何。这方面应该网上有很多技术选型的分析博文。
Bryan0Z
2018-11-14 15:42:26 +08:00
spring security +1
有点复杂…
youngxhui
2018-11-14 15:44:03 +08:00
没用过 shiro,spring security 感觉还好
godoway
2018-11-14 15:46:30 +08:00
配过 shiro,一头雾水
最后还是用 security 了,security 的配置挺舒服的。
zgcwkj
2018-11-14 15:48:25 +08:00
我在学习 SpringBoot 呢!好不清楚这些怎么控制
xiaoxinshiwo
2018-11-14 16:28:13 +08:00
shiro 简单点
spring security 稍显复杂
Mrbird
2018-11-14 16:54:00 +08:00
idamien
2018-11-14 17:02:49 +08:00
Spring Security 剩下的就是老路子 配置配置配置问题!
TommyLemon
2018-11-14 17:15:17 +08:00
自动化的权限控制了解下,3 行代码就可配置每种角色对一张表的增删改查权限。

我们用 APIJSON 来操作一张表,例如用户表 User,代码写 3 行就够了:

//注册表并添加权限,用默认配置
@MethodAccess
public class User {
//内容一般仅供表字段说明及 Android App 开发使用,服务端不用的可不写。
}

//Verifier 内添加权限
accessMap.put(User.class.getSimpleName(), getAccessMap(User.class.getAnnotation(MethodAccess.class)));


然后运行下 Server 工程就可以请求了:

URL: http://apijson.cn:8080/get

表单:

{
"User": {
"id": 82001
}
}
返回:

{
"User": {
"id": 82001,
"sex": 0,
"name": "Test",
"tag": "APIJSON User",
"head": "http://static.oschina.net/uploads/user/19/39085_50.jpg",
"contactIdList": [
82004,
82021,
70793
],
"pictureList": [
"http://common.cnblogs.com/images/icon_weibo_24.png"
],
"date": "2017-02-01 19:21:50.0"
},
"code": 200,
"msg": "success"
}


或者可以再定制下 POST 请求的角色权限:
//只允许未登录角色和管理员角色新增 User,默认配置是{UNKNOWN, LOGIN, CONTACT, CIRCLE, OWNER, ADMIN}
@MethodAccess(
GET = {LOGIN, CONTACT, CIRCLE, OWNER, ADMIN}
)
public class User {}

再直接像上面那样请求就会报错:
{
"User": {
"id": 82001
},
"tag": "User",
"code": 407,
"msg": "未登录,请登录后再操作!"
}
登录后就和上面一样返回正确的结果。


不用写代码 APIJSON 3.5K Star 超第 2 大 ORM 库 Hibernate
https://www.v2ex.com/t/507671#reply7
lj3lj3
2018-11-14 17:34:58 +08:00
我觉得 Shiro 配置也不简单😂 没有使用过 Spring Security 无法对比
iyangyuan
2018-11-14 18:05:40 +08:00
https://github.com/iyangyuan/security
自写自用,完全基于注解,用 redis 做分 session 布式存储
vjnjc
2018-11-14 18:11:43 +08:00
肯定 spring 官方的啊 spring security
mmdsun
2018-11-14 19:39:08 +08:00
自己写拦截器最简单。或者 shiro。spring security 有些复杂
wolfie
2018-11-14 19:45:32 +08:00
看过 shiro 视频,每个方法上加授权注解就行。
jakes
2018-11-14 20:02:48 +08:00
用的 shiro,很简单
xuanbg
2018-11-14 21:19:44 +08:00
自己实现的一套基于 Token 的权限体系,核心代码也就几百行。发放给用户的 Token 很简单,就是一个 Base64 编码的字符串,也就几十个字符。对应的令牌数据比较复杂,是存在 Redis 上的。因为鉴权所需的数据都在 Redis 上,所以鉴权可以很方便地统一在网关上实现,而且基本上不会因鉴权造成延时。
flzyup
2018-11-15 10:47:05 +08:00
刚实现了一个:shiro + jwt token shiro 比较轻量 简单易懂 security 比较全 相对比较复杂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/507791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX