TommyLemon / APIJSON-JS

APIJSON for JavaScript
https://github.com/TommyLemon/APIJSON
Apache License 2.0
14 stars 3 forks source link

身份验证方面 #2

Closed gmono closed 7 years ago

gmono commented 7 years ago

demo 里写的那个是明文发用户名密码吗,还是说内部有一套专门用于身份验证的机制?

TommyLemon commented 7 years ago

@gmono demo里为了方便调试没有加密,上线前起码都要在前端/客户端加密后上传,如果需要更加安全,可以服务器再加密一次。可以用传统的MD5或者比较新的哈希加密等,具体看对安全要求多高。 另外密码只允许上传(POST)不允许下载(GET),服务端的demo目前就是这样实现的

TommyLemon commented 7 years ago

@gmono 有些数据是需要登录后才能操作(增删改查)的,因为服务端做了类似以下的权限配置

@MethodAccess(
  POST = {LOGIN} //其实不用写这句,MethodAccess默认就是写操作都必须登录
)
public class Comment {
}

查看权限配置

这就需要先访问 base_url/login 接口(用传统RESTful实现的,传参类型是JSON),才能再访问需要登录的数据,例如

Method: POST URL: base_url/login Body:

{
    "phone": "13000082001",
    "password": "123456"
}

查看接口 /login

然后新增一条评论 Method: POST URL: base_url/post Body:

{
    "Comment": {
        "userId": 82001,
        "momentId": 12,
        "content": "测试新增评论"
    },
    "tag": "Comment"
}

查看接口 /post

成功结果:

{
    "Comment": {
        "code": 200,
        "msg": "success",
        "id": 1503234961450,
        "count": 1
    },
    "code": 200,
    "msg": "success"
}

如果没有登录,则是返回失败结果:

{
    "Comment": {
        "userId": 82001,
        "momentId": 12,
        "content": "测试新增评论"
    },
    "code": 401,
    "msg": "Comment 不允许 UNKNOWN 用户的 POST 请求!"
}

为了使用方便与提升性能,最新版APIJSON的几乎所有接口已经全走HTTP POST通道了,只剩下为了兼容文档里测试链接的get和head

gmono commented 7 years ago

你这个整个后端都是基于 springboot写的吗?

gmono commented 7 years ago

那个 MethodAccess注解是继承的 Entity注解吗 可以像正常 spring boot中的实体类一样写Comment 吗

TommyLemon commented 7 years ago

@gmono 对,是基于SpringBoot,不过其实关系并不大,因为只是用它实现了HTTP传输,换个框架,甚至换成TCP,UDP等传输协议都没关系,接收到请求后把Parser.parse函数的返回值返回就行了。 MethodAccess没有继承Entity,就是一个普通的权限注解,除了要加上MethodAccess注解,Comment等model都可以和原来一样,包括成员变量,getter,setter等,毕竟APIJSON请求里的字段都是默认和数据库表字段对应的,和model(JavaBean)没啥关系,除非你转成JavaBean