【问题标题】:how to send data as post request and move to particular url in spring mvc如何将数据作为发布请求发送并移动到spring mvc中的特定url
【发布时间】:2017-12-30 05:01:30
【问题描述】:

我在 Ui 上有一个带有 Angular js 的 spring mvc 应用程序。

我有以下要求

我从用户那里获得详细信息(考虑产品,数量)

我需要将详细信息作为发布请求连同重定向到支付网关网站一起发送到支付网关

现在我们将详细信息发送到基于 Angular js 构建的 UI,UI 向支付网关发送 post 请求,然后我们进入支付网关网站

由于我们向 UI 发送了大量敏感数据,因此我们希望实现对支付网关的重定向以及服务器端的发布请求,以确保安全。

我无法在 spring mvc 中使用控制器来做到这一点

我尝试了以下方法

1] forward://网站名称(因为这不适用于应用程序外部的 url)

@RequestMapping(value="/serverRedirection",method = RequestMethod.GET)
    public String myMethod(HttpServletRequest request) {

        RechargeDto rechargeDto = new RechargeDto();
        rechargeDto.setAmount("500");
        rechargeDto.setProvider("AT");
        rechargeDto.setMobile("9892948061");
        logger.info("Entered recharge controller");
        String message = "Invalid from app";

        request.getSession().setAttribute("amount", rechargeDto.getAmount());
        request.getSession().setAttribute("mobile", rechargeDto.getMobile());
        request.getSession().setAttribute("provider", rechargeDto.getProvider());

        PauDto pauDto = rechargeService.passToPayu(Float.parseFloat(rechargeDto.getAmount()), 2l, "9898989898");
        request.setAttribute("key", pauDto.getKey());
        request.setAttribute("txnid", pauDto.getTxnid());
        request.setAttribute("service_provider", pauDto.getService_provider());
        request.setAttribute("firstname", pauDto.getFirstname());
        request.setAttribute("amount", pauDto.getAmount());


        return "forward:https://website";
    }

2] 重定向(使用带有redirect://的重定向属性也没有帮助,因为应用程序被重定向到支付网关但没有发送数据(因为重定向不能用于转发请求)

   @RequestMapping(value="/serverRedirection",method = RequestMethod.GET)
    public String myMethod(RedirectAttributes  request,HttpServletRequest req) {

        RechargeDto rechargeDto = new RechargeDto();
        rechargeDto.setAmount("500");
        rechargeDto.setProvider("AT");
        rechargeDto.setMobile("9892948061");
        logger.info("Entered recharge controller");
        String message = "Invalid from app";


        PauDto pauDto = rechargeService.passToPayu(Float.parseFloat(rechargeDto.getAmount()), 2l, "9898989898");
        pauDto.getService_provider());
        request.addAttribute("firstname", pauDto.getFirstname());
        request.addAttribute("amount", pauDto.getAmount());


        return "redirect:https://website";
    }

有什么办法可以做到这一点,或者有什么替代方法。

【问题讨论】:

    标签: java angularjs http spring-mvc spring-security


    【解决方案1】:

    一般来说,在这种情况下,在 UI 中构建了一个表单,其中包含有效负载的隐藏输入字段(令牌、价格等 - 取决于您的支付网关),表单操作直接设置为支付网关的 URL,然后只需提交表单。

    【讨论】:

    • 这不是安全问题吗,因为用户可以查看发送到支付网关的密钥或任何其他方式来确保安全
    • 嗯,在这种形式下,当前的买家确实没有什么不应该看到的。通常,支付网关提供商会为您提供某种盐和算法(甚至是读取的代码),以说明如何从该盐和购买数据生成哈希。通常,您只通过表单发送购买数据(产品、数量、价格、买家信息等)和生成的哈希。不是你的私人盐。
    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2020-04-25
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多