你说的应该是权限控制吧?
一般会创建 资源表,角色表,用户表,角色和资源关联表,角色和用户关联表
资源表 保存 接口访问路径等信息
角色表 保存 角色信息
用户表 保存 用户信息
角色和资源关联表 保存 角色下管理的资源
角色和用户关联表 保存 角色下管理的用户
通过给一个用户赋角色来绑定这个用户的资源(权限)
拦截所有的请求,获取当前登录用户的所有权限后和当前请求路径进行匹配,如果包含允许访问;不包含禁止访问
不知道是不是这个意思
感谢回复,
是这个意思,但是想找的是成熟的开源方案,不知道有没有这种,目前用的是 API key + secret key这种方式做的鉴权,只能针对用户这个级别,即用户只要通过了验证就能访问所有接口;
希望是可以做到给不同用户分配不用的接口权限,没有分配权限的接口不可以访问,您说的这种我也是做备案,如果找不到开源的方案就自定义一套用来过滤用户。
谢谢!
@MjwSilence: 开源的比如Spring Security,Apache Shiro,都可以,可以了解看看
@飒沓流星: 谢谢,我查查看
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";
}
感谢回复,
自定义过滤器我明白,方法似乎是用来跳过auth认证的,不过我的目的不是单纯的跳过,而是针对接口分配访问权限,举个例子,我有编号1,2,3,4四个接口,我给用户A分配1,2两个接口的访问权限,给用户B分配3,4两个接口的访问权限,这时候B用户虽然可以通过用户安全验证,但是只能访问3,4两个接口,不能访问1,2两个接口。
谢谢!
@MjwSilence: 这不是思路很清晰了吗?感觉半天做一个接口权限的功能很快的。
@一缕轻烟断乾坤: OK,谢谢回复