这是一个基于JsonWebToken的易班oauth sdk,目的是简化易班整体开发,并提供一个独立的,灵活的模块化的OauthSDK
引入jar包,点击这里下载
将此Jar包放入classpath
- 配置登陆点
//普通用户
@Autowired
private AuthService authService
@RequestMapping("/auth")
public Object toAuth(String vq){
Object result = authService.auth(vq,yourAppId,yourAppSecret)
return result;
}
//你并不需要检查登陆 因为所有被@YiBanJwtAuth 和 @YiBanConmmonAdminAuth修饰的都会被拦截器拦截
//并返回错误信息
@Autowired
private AuthService authService;
@RequestMapping("/admin/auth")
public Object toAdminAuth(String vq){
YiBanUserInfoTemplate userInfo = (YiBanUserInfoTempalte)YiBanOauthUtil.decodeYiBanVerifyRequest(vq,"acaec190548725cf","6b7d82af041da97d586ad8b8d8204225");
/*your code to judge...*/
return authService.adminAuth(userInfo,isAdmin)
}
- 配置拦截器(Java)
@Configuration
@ComponentScan("io.github.wulei123.yibansdkauthjwt")
public class InterceptorConfig extends WebMvcConfigurerAdapter{
@Autowired
private JwtAuthInterceptor jwtAuthInterceptor;
@Autowired
private JwtCommonAdminInterceptor jwtCommonAdminInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(jwtAuthInterceptor);
registry.addInterceptor(jwtCommonAdminInterceptor);
}
}
- 如果你想拦截普通用户登陆 使用 @YiBanJwtAuth 注解装饰该方法即可
@YiBanJwtAuth
public Object doSomeThing(){ ... }
- 如果你想拦截管理员登陆 使用 @YiBanJwtCommonAdminAuth 注解装饰该方法即可
@YiBanJwtCommonAdminAuth
public Object doSomeThing(){ ... }
- yml配置
yibanoauth:
app:
appId: yourappid
appKey: yourappsecret
jwt:
secret: secret
expiresSecond: 147800
- 前端请求
认证时将 verify_request 转发至你设定的auth地址
认证成功后将JWT返回给前端
每次向后端发送请求时要在Header中包含键为"YiBan-JWT" 值为上一步返回的的JWT即可
- 错误码对照表
错误码 | 错误类型 |
---|---|
0 | 没有登陆 |
1 | 登陆成功或已登陆却重复认证 |
2 | token过期 |
3 | 不是管理员 |
4 | 未知错误 |
6 | Header中不包含YiBan-JWT |