Laravel 中如何实现对所有输入数据的预处理

应用的场景是这样的:

客户端向服务器发送一个经过加密处理的数据,比如将 username=ben&passwd=xxx 这个加密为一个字符串,然后发送到 a.com/register. 在laravel里处理时先对这个字符串进行解密,然后再发送至不同的controller进行处理。

遇到的问题:

  1. 如果在App::before()里对输入进行解密,那么如果将解密后的数据作为请求的一部分,继续发往下一部分呢?

  2. 如果在每个controller里都调用一次解密的话,会写很多重复的代码,这个有什么方法可以处理掉呢?

  3. 在返回给client的时候,又需要将返回值进行加密处理,那这个放在什么地方合适呢? App::after的疑问与(1)类似

刚接触laravel不久,文档和google也都有搜索过,无论问题简单与否,都希望能有知道的童鞋给指点下,谢谢啦

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4
Summer

App::before 里面做处理的就行了, Controller , 如 Laravel blog 里面的这段过滤 xss 的代码: https://github.com/summerblue/laravel-blog...

App::before(function($request)
{
    // 这个函数做解密, 并且返回 key => value 对应的数组如: ['username' => 'alibaba', 'password' => 'admin']
    $array = decrypt_from_input(Input::get('encrypt_string'))
    Input::merge($array);
});

然后 Controller 里代码就可以这样获取用户提交的参数了 :sun_with_face: :

Input::get('username');
Input::get('password');

话说, 如果数据敏感的话, 建议使用 HTTPS 做加密呀, 不推荐自己做 发明 加密.

9年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!