PasswortStatus
Der PasswortStatusBuilder (Fmh.PasswortStatus()) zeigt die geltenden
Passwortregeln als Liste und hakt sie während der Eingabe ab. Die Prüfung läuft rein im Browser
über das Modul fmh-pw-check-helper.mjs und ersetzt keine serverseitige Validierung.
Regelliste zum Password-EditorTemplate
Die Regeln haken sich während der Eingabe ab – der Builder verbindet sich über For(...) mit der Id, die das EditorTemplate aus dem Eigenschaftsnamen bildet.
@model PasswordBeispielViewModel
@* Das Password-EditorTemplate bildet die HTML-Id aus dem Eigenschaftsnamen. For(...) braucht genau
diese Id – nameof(...) hält beide Seiten zusammen, auch wenn die Eigenschaft umbenannt wird. *@
<div class="mb-3" style="max-width: 24rem;">
@Html.EditorFor(m => m.Passwort)
</div>
@Html.Fmh(Fmh.PasswortStatus().For(nameof(Model.Passwort)))
using System.ComponentModel.DataAnnotations;
namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
public class PasswordBeispielViewModel
{
[Display(Name = "Passwort")]
[UIHint("Password")]
public string Passwort { get; set; }
}
}
Darstellung
The password must meet the following requirements
Der PasswortStatusBuilder wird über Fmh.PasswortStatus() erzeugt und mit @Html.Fmh(...) gerendert. Er zeigt die geltenden Passwortregeln und hakt sie während der Eingabe ab. Das Eingabefeld liefert das Password-EditorTemplate:
[Display(Name = "Passwort")]
[UIHint("Password")]
public string Passwort { get; set; }
@Html.EditorFor(m => m.Passwort)
@Html.Fmh(Fmh.PasswortStatus().For(nameof(Model.Passwort)))
Methoden
| Methode | Erklärung |
|---|---|
.For(string id) |
Die HTML-Id des Passwortfeldes, an das sich die Prüfung hängt. Ohne passende Id passiert nichts — das Modul bricht still ab. |
Wie Feld und Regelliste zusammenfinden
Das Password-EditorTemplate bildet die Id aus dem Eigenschaftsnamen (Html.IdFor(...)), aus Passwort wird also id="Passwort". Genau diese Id erwartet For(...) — mit nameof(Model.Passwort) bleiben beide Seiten auch nach einem Umbenennen zusammen.
Ausnahme [UniqueId]: Trägt die Eigenschaft dieses Attribut, hängt das Template ein Zufalls-Suffix an die Id (Passwortmdc4711…). Diese Id entsteht erst beim Rendern und lässt sich im View nicht vorhersagen — For(...) findet das Feld dann nicht mehr, und die Regelliste bleibt stumm. Beides zusammen geht also nicht (siehe Demo-Seite Validierung › UniqueId).
Die geprüften Regeln
Die Regeln stehen im Modul fmh-pw-check-helper.mjs und sind fix; der Builder hat dafür keine Optionen:
| Regel | Bedingung |
|---|---|
| Länge | mindestens 12 Zeichen |
| Grossbuchstabe | A–Z |
| Kleinbuchstabe | a–z |
| Ziffer | 0–9 |
| Sonderzeichen | eines aus !@#$%^&*(),.?":{}|<> |
Erfüllte Regeln erhalten die Klasse pw-valid, offene pw-invalid. Die Beschriftungen kommen aus den Ressourcen (_FmhWebMvc.Password…) und sind damit übersetzt.
Was zu beachten ist
- Die Prüfung läuft nur im Browser. Sie ist eine Eingabehilfe, keine Validierung — die verbindliche Prüfung gehört auf den Server.
- Die Statuszeilen tragen feste Ids (
length,uppercase,lowercase,number,special). Der Baustein gehört deshalb genau einmal auf eine Seite; zwei Regellisten würden sich dieselben Ids teilen und nur die erste würde aktualisiert. - Der Builder lädt sein Modul selbst nach (
import(...)) und meldet sich beim Feld überinitPasswordCheck(...)an. Das Feld muss beim Ausführen im DOM stehen — der Aufruf gehört also nach das Eingabefeld. - Das
Password-EditorTemplate bringt zusätzlich das Auge zum Ein-/Ausblenden des Passworts mit; beides nutzt dasselbe Modul und kommt sich nicht in die Quere. - Ein bereits gefüllter Wert wird beim Initialisieren einmal geprüft, der Status stimmt also auch bei vorausgefüllten Formularen.