用node.js写restful接口,接口的访问权限问题
发布于 8 年前 作者 wocaatm 7441 次浏览 来自 问答

node.js写api,api的权限要不要加,如果要加的话怎么加?

15 回复

自己评论一发

@wocaatm 路由加个中间件,判断下条件能否让其访问

看你需求了,不过一般要加!加的话就是自己加了

https://cnodejs.org/topic/58c1477b06dbd608756d0bca 可以参考我的这篇关于RESTfulApi权限实践

用的什么框架,也要写API

其实个人以为只要?username=xxx&password=xxx,再用上https即可。token很费事。

参考我的 https://github.com/open-node/open-rest 里的样板工程,权限验证做成一系列的小函数,控制器里灵活的组合这些小函数,这样每个函数足够简单,组合以后功能足够强大。

看cnodejs服务器的源码 From Noder

其实最简单的办法就是去判断url, 什么url需要验证,什么的不需要,比如我这个设置需要验证url的都统一url上面有一个 /auth_ 标示,对于这类url,则去判断登录状态

/**
 * auth 中间件,所有需要验证路由,必须有 '/auth_'
 * @param ctx
 * @param next
 */
module.exports = async (ctx, next) => {

    try {
        let route = ctx.originalUrl;
        let reg = /\/auth_/;
        if(reg.test(route)){
            if(!ctx.session.user){
                throw new Error('请先登录')
            }
        }
        await next();
    } catch (e) {
        ctx.status = 401;
        ctx.body = e.message
    }
};

整个项目地址,可以看这个:https://github.com/yujintang/koa2-server

推荐swagger-tools , 呵呵

可以 写一个 yml 文件, 写出 每个角色所属权限, 使用中间件判断

回到顶部