Symfony / Doctrine - Listener - Encrypt / Decrypt

时间:2018-04-25 18:36:17

标签: symfony

我有加密和解密的监听器。 加密:

package com.myapp;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class MyFilter implements Filter
{

    @Override
    public void init(FilterConfig filterConfig)
    {
        // ...
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
    {

        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.addHeader("myHeader", "myHeaderValue");
        chain.doFilter(request, httpResponse);
    }

    @Override
    public void destroy()
    {
        // ...
    }
}

问题在于解密部分。 如何修改加载数据而不将其保存在数据库中?现在它正在使用解密的onload更新加密数据。

谢谢

1 个答案:

答案 0 :(得分:3)

您的问题是您不应该使用prePersist事件,因为只有在您向该数据库添加实体时才会调用此事件,但在更新实体时则不会调用此事件。

在Doctrine生命周期事件列表here中,您可以看到您要使用的事件是preUpdate,以便在每次更改时,它会在保存之前再次加密< / p>