Saltar al contenido

Integrarlo en una app de Tauri

Dónde vive el código de secretos, qué comandos se exponen, cómo se combina con el estado del core y por qué el frontend nunca ve un testigo.

Los comandos que se exponen

Ninguno que hable de secretos. Ésta es la decisión central y sale directa del nivel 14.4:

La última fila es la prueba de que la forma importa. Con comandos de dominio, el peor caso de un frontend comprometido es una molestia; con comandos primitivos, es la pérdida de las credenciales.

Dónde vive el código

Tres piezas, con el estado del core en medio:

Rust
// 1 · el módulo de secretos: la capa del nivel 37.5, sin saber de Taurimod secretos {    pub fn obtener(cuenta: &str) -> (Option<String>, Fuente) { /* … */ }    pub fn guardar(cuenta: &str, s: &str) -> Result<(), Error> { /* … */ }    pub fn borrar(cuenta: &str) -> Result<(), Error> { /* … */ }    pub fn disponible() -> bool { /* … */ }}// 2 · el estado del core: el testigo vivo, leído una vezstruct Sesion {    testigo: RwLock<Option<Testigo>>,}// 3 · los comandos: de dominio, y no devuelven el testigo#[tauri::command]async fn iniciar_sesion(    estado: State<'_, Sesion>,    email: String,    clave: String,) -> Result<Perfil, Error> {    let t = api::autenticar(&email, &clave).await?;    // guardar puede fallar (Linux): la sesión sigue siendo válida    if let Err(e) = secretos::guardar(&email, &t.valor) {        log::warn!("sesión no persistida: {e}");    }    let perfil = t.perfil.clone();    *estado.testigo.write().await = Some(t);    Ok(perfil)}

Tres detalles del fragmento que no son decorativos:

  • El módulo de secretos no conoce Tauri. Se puede probar sin arrancar una aplicación, que es la mitad de por qué esta fase es testable.
  • El testigo vivo está en el estado del core —fase IV— y se lee del almacén una vez, no en cada operación. Nivel 35.2: cada lectura es una oportunidad de diálogo.
  • Y que guardar falle no invalida la sesión. Es el caso de Linux del nivel 37.1: el usuario ha iniciado sesión de verdad; lo único que no va a pasar es que se recuerde la próxima vez.

El arranque

El otro momento donde encajan las piezas, y donde el orden importa:

El paso 4 es el que más se olvida y es el que evita el estado zombi: una aplicación que cree tener sesión con un testigo que el servidor ya no acepta, fallando en cada operación sin entender por qué.

Los permisos que esto necesita

Y una nota de la fase V que cierra el círculo: este diseño no necesita ningún permiso especial en tus capabilities, porque el frontend no habla con el almacén. Solo necesita poder llamar a tus tres comandos de dominio.

Si en algún momento te ves añadiendo un permiso de plugin de almacenamiento seguro a una capability, merece parar: significa que el frontend está tocando secretos directamente, y eso es la columna roja de la primera tabla.