| Campo | Tipo | Descrição |
|---|---|---|
| Required / RequiredMsg | bool / string | Campo obrigatório. |
| MinLen / MinLenMsg | int / string | Comprimento mínimo. |
| MaxLen / MaxLenMsg | int / string | Comprimento máximo. |
| MinNum / MinNumMsg | *float64 / string | Valor numérico mínimo. |
| MaxNum / MaxNumMsg | *float64 / string | Valor numérico máximo. |
| Pattern / PatternMsg | string / string | Regex de validação. |
Formulários
Form com CSRF e validação client/server-side.
Form com proteção CSRF
Token assinado via HMAC-SHA256, armazenado em cookie HttpOnly e comparado com o campo _csrf no POST.
▼
go
// GET handler:
token := components.NewCSRFToken(w)
// Função de página:
components.Form("/submit", "POST",
components.CSRF(token),
components.FormField("Nome", components.Input(components.Name("nome")), ""),
components.Button("Enviar"),
)
// POST handler:
if !components.ValidateCSRF(r) {
http.Error(w, "CSRF inválido", 403)
return
}
// Configurar segredo (chamar uma vez no main):
components.SetCSRFSecret("meu-segredo-aleatorio-de-32-bytes")