开发APP项目,JFinal实现后端服务,提供rest 接口,有没有借鉴的权限方案?

后端由JFinal实现Rest服务接口,APP调研接口,权限这块有好的思路或借鉴方案吗?

评论区

JFinal

2017-03-09 17:09

参考一下微信公众平台的设计方案就挺好,大致如下:
1:客户端通过用户名与密码先向服务端获取一个标识该用户的 accessToken 值
2:accessToken 值具有一定的使用时限,例如,微信平台是 7200 秒,过期后需要再次发起请求来获取 accessToken
3:客户端与服务端所有通信处于 https 通道之下,防止被监听

客户端的具体实现参考一 jfinal weixin 中有关获取 accessToken 的实现,服务端实现跟登录功能差不多,只不过登录成功后返回的那个 accessToken 有使用时限

服务端权限管理参考一下俱乐部专享项目 jfinal-club 中的拦截器,数据响应使用 jfinal 的 renderJson 即可

旅杰

2019-05-14 09:22

jfianl框架对于app项目的开发支持度好吗

liugz

2019-09-20 23:59

@JFinal 看到您第2条的回复 ”accessToken 值具有一定的使用时限,例如,微信平台是 7200 秒,过期后需要再次发起请求来获取 accessToken”, 这个一般如何实现的?

比如:用户在app上填写一个表单时,accessToken过期了,需要用户重新录入用户名密码获取accessToken吗, 这样体验会不好吧

微信服务号开发里,是将id和密钥存放到配置文件中,如果token过期,那么可以通过id和密钥再获取一次token,但在app上要如何弄没太想明白

JFinal

2019-09-21 10:37

@liugz 在每次获取 AccessToken 对象时判断一下它是否有效,无效则重新获取,这里有源码:
https://gitee.com/jfinal/jfinal-weixin/blob/master/src/main/java/com/jfinal/weixin/sdk/api/AccessTokenApi.java

getAccessToken() 调用了 getAvailableAccessToken(...),而这个方法内部的判断:
if (result != null && result.isAvailable())

如果判断为 false,上层 getAccessToken() 方法中会得到一个 null 值,随后在 synchronized 块中调用了 refreshAccessToken(...) 去远程微信服务获取新的 accessToken 值

liugz

2019-09-21 13:38

@JFinal 波总 这个逻辑没问题,能看懂。 refreshAccessToken()这个方法还是要根据配置文件中的appId和appSecret再去更新token。

问题是:如果用户在界面上填表单,假如token过期了,界面上不能存用户的密码吧,也不能要客户再填一次密码登录吧。 那要如何获取新的token呢?

我在网上看了很多说是登录后保存token和refreshToken,https://www.cnblogs.com/minirice/p/9232355.html

JFinal

2019-09-21 17:14

@liugz jfinal weixin 项目只涉及后端获取 access token, 用户在界面上填表单不涉及这个事

热门反馈

扫码入社