net.yadaframework.security.web.YadaActionUploadAttrProcessor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of yadawebsecurity Show documentation
Show all versions of yadawebsecurity Show documentation
Yada Framework authentication and authorization component
The newest version!
package net.yadaframework.security.web;
import org.springframework.security.web.csrf.CsrfToken;
import org.thymeleaf.IEngineConfiguration;
import org.thymeleaf.context.ITemplateContext;
import org.thymeleaf.engine.AttributeName;
import org.thymeleaf.model.IProcessableElementTag;
import org.thymeleaf.processor.element.AbstractAttributeTagProcessor;
import org.thymeleaf.processor.element.IElementTagStructureHandler;
import org.thymeleaf.standard.expression.IStandardExpression;
import org.thymeleaf.standard.expression.IStandardExpressionParser;
import org.thymeleaf.standard.expression.StandardExpressions;
import org.thymeleaf.templatemode.TemplateMode;
// TODO this used to be included in the "yada" dialect before splitting the YadaWebSecurity project.
// Now it's not used anymore, waiting for a new "yadasec" dialect
/**
* Serve solo se il csrf è attivo.
* Questa classe aggiunge il tag yada:actionUpload da usare quando si fa multipart file upload con Spring Security e la dimensione massima del file settata.
* Vedi http://stackoverflow.com/questions/23856254/how-to-nicely-handle-file-upload-maxuploadsizeexceededexception-with-spring-secu
* Senza questo tag, Spring Security lancia un 403 Forbidden quando il max filesize specificato nel filtro viene superato, e non si arriva al Controller.
* Con questo tag (e il workaround del YadaCommonsMultipartResolver) invece tutto funziona e si arriva al Controller con un MultipartFile pari a null.
* Il trucco consiste nel mettere il _csrf come parametro nell'url della form action.
* Esempio: