NutzCN Logo
问答 TokenFilter 无法接收json
发布于 2169天前 作者 herexu 1431 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk
public View match(ActionContext context) {
        String appId = Strings.sNull(context.getRequest().getParameter("appId"));
        String token = Strings.sNull(context.getRequest().getParameter("token"));
        if (!apiService.verifyToken(appId, token)) {
            return new UTF8JsonView(JsonFormat.compact()).setData(Result.error(-1,"token invalid"));
        }
        return null;
    }

String appId = Strings.sNull(context.getRequest().getParameter("appId"));
这个不能接收JSON,只能序列化了之后才才能接收

6 回复

test下看客户端测试代码,如果不满足你需要,可以自定义自己的实现

@Wizzercn 这个测试是可以的,可是我想要 @AdaptBy(type = JsonAdaptor.class)这种效果,可是
String appId = Strings.sNull(context.getRequest().getParameter(“appId”)); 获取不到,是想自己改一下实现,但是不知道该哪里

参数在json里面,getParameter是获取表单参数,所以不行

@Wizzercn @wendal 我自己改造了一下,代码如下,是可以获取到token和appId的,但是ServletInputStream ins = context.getRequest().getInputStream();属于浅拷贝,导致厦门真正的方法调用的时候,所有参数都是空的,还没找到解决办法

public View match(ActionContext context) {
        try {
            ServletInputStream ins = context.getRequest().getInputStream();
            BufferedReader streamReader = new BufferedReader(new InputStreamReader(ins, "UTF-8"));
            StringBuilder responseStrBuilder = new StringBuilder();
            String inputStr;
            while ((inputStr = streamReader.readLine()) != null)
                responseStrBuilder.append(inputStr);
            NutMap nm = Json.fromJson(NutMap.class, responseStrBuilder);
            String appId = String.valueOf(nm.get("appId"));
//            String appId = Strings.sNull(context.getRequest().getParameter("appId"));
            String token = String.valueOf(nm.get("token"));
            if (!apiService.verifyToken(appId, token)) {
                return new UTF8JsonView(JsonFormat.compact()).setData(Result.error(-1, "token invalid"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;


    }

这个问题我之前提过办法: 首先,把上面的json对象放入req.setAttr, 然后做个类继承JsonAdaptor, 通过req.getAttr获取(如果有的话,没有就走原本的逻辑)

@wendal 大功告成,谢谢兽总

添加回复
请先登陆
回到顶部