NutzCN Logo
问答 传参如果是form-data接收不到
发布于 2930天前 作者 Hamming 2682 次浏览 复制 上一个帖子 下一个帖子
标签:

我写的过滤器如下 如果页面传参带附件上传形式的 在POSTMAN 测试只有用form-data 然而 就获取不到ID Token
如何解决好呢?

package nuoshang.bluejay.common.filter;

import nuoshang.bluejay.common.base.BaseModule;
import nuoshang.bluejay.common.base.ResultApp;
import nuoshang.bluejay.modules.back.sys.services.ApiService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.nutz.integration.shiro.SimpleShiroToken;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.nutz.mvc.ActionContext;
import org.nutz.mvc.ActionFilter;
import org.nutz.mvc.View;
import org.nutz.mvc.impl.processor.AbstractProcessor;

import javax.servlet.http.HttpServletRequest;

/**
 * Created by yuhaiming on 2016/10/12 0012.
 */
public class AccessTokenFilter implements ActionFilter {
    private static final Log log = Logs.get();

    protected ApiService apiService;

    public View match(ActionContext ac) {
        if (apiService == null)
            apiService = ac.getIoc().get(ApiService.class);
        HttpServletRequest req = ac.getRequest();
        String id = req.getParameter("id");
        String token = req.getParameter("token");
        if (!apiService.verifyToken(id,token)) {
            return BaseModule.HTTP_403;
        }
        SecurityUtils.getSubject().getSession().setAttribute("me", id);
        log.debug("api access token check ok");
        return null;
    }
}

3 回复

文件上传的时候,把id和token放在url中

@wendal 除了这个解决方法呢

要么放在header里面,总之不能放在body内。原因是body需要解析才能读到值,而解析是适配器做的,在@Filters之后完成。

ps,即使放在适配器后,req.getParam依然拿不到

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