首页 新闻 搜索 专区 学院

针对不同接口鉴权

0
悬赏园豆:20 [已解决问题] 解决于 2022-06-24 09:54

现在的几种方案(jwt, htt)都可以做验证,
但是怎么做到针对单个接口呢?
比如能访问这个接口但不能访问另外的接口

MjwSilence的主页 MjwSilence | 初学一级 | 园豆:184
提问于:2022-06-23 13:48
< >
分享
最佳答案
0

你说的应该是权限控制吧?
一般会创建 资源表,角色表,用户表,角色和资源关联表,角色和用户关联表
资源表 保存 接口访问路径等信息
角色表 保存 角色信息
用户表 保存 用户信息
角色和资源关联表 保存 角色下管理的资源
角色和用户关联表 保存 角色下管理的用户
通过给一个用户赋角色来绑定这个用户的资源(权限)
拦截所有的请求,获取当前登录用户的所有权限后和当前请求路径进行匹配,如果包含允许访问;不包含禁止访问

不知道是不是这个意思

收获园豆:20
飒沓流星 | 小虾三级 |园豆:681 | 2022-06-23 14:03

感谢回复,
是这个意思,但是想找的是成熟的开源方案,不知道有没有这种,目前用的是 API key + secret key这种方式做的鉴权,只能针对用户这个级别,即用户只要通过了验证就能访问所有接口;
希望是可以做到给不同用户分配不用的接口权限,没有分配权限的接口不可以访问,您说的这种我也是做备案,如果找不到开源的方案就自定义一套用来过滤用户。
谢谢!

MjwSilence | 园豆:184 (初学一级) | 2022-06-23 14:07

@MjwSilence: 开源的比如Spring Security,Apache Shiro,都可以,可以了解看看

飒沓流星 | 园豆:681 (小虾三级) | 2022-06-23 14:18

@飒沓流星: 谢谢,我查查看

MjwSilence | 园豆:184 (初学一级) | 2022-06-23 14:21
其他回答(1)
0

1.网关层面的话,可以通过路由绕过
2.可以自己写拦截器
3.自定义注解

自定义注解实现:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface EnableAuth {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface IgnoreAuth {

}

使用的时候:

 @RequestMapping("/index")//主页
    @IgnoreAuth
    public String index(){
        return "/contribute/index";
    }
智客工坊 | 园豆:1269 (小虾三级) | 2022-06-23 14:11

感谢回复,
自定义过滤器我明白,方法似乎是用来跳过auth认证的,不过我的目的不是单纯的跳过,而是针对接口分配访问权限,举个例子,我有编号1,2,3,4四个接口,我给用户A分配1,2两个接口的访问权限,给用户B分配3,4两个接口的访问权限,这时候B用户虽然可以通过用户安全验证,但是只能访问3,4两个接口,不能访问1,2两个接口。
谢谢!

支持(0) 反对(0) MjwSilence | 园豆:184 (初学一级) | 2022-06-23 14:19

@MjwSilence: 这不是思路很清晰了吗?感觉半天做一个接口权限的功能很快的。

支持(0) 反对(0) 一缕轻烟断乾坤 | 园豆:200 (初学一级) | 2022-06-23 14:35

@一缕轻烟断乾坤: OK,谢谢回复

支持(0) 反对(0) MjwSilence | 园豆:184 (初学一级) | 2022-06-23 14:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册