Tauri v2 ile masaüstü uygulamaları geliştirirken karşılaşılan en büyük engellerden biri, özellikle de yetkilendirme sistemlerinden kaynaklanıyor. Bir komut yazıp frontend tarafında çağırdığınızda hiçbir şey olmuyorsa — ne hata mesajı ne de çökme — büyük olasılıkla izinlerinizde bir sorun var. Bu sessiz başarısızlıklar, geliştiricilerin en sık karşılaştığı durumlardan biri olarak karşımıza çıkıyor. Özellikle tek başına uygulama geliştirenler için, bu sorunların çözümü bazen kafa karıştırıcı olabiliyor.
Tauri v2 Yetkilerinin Temel Çalışma Prensibi
Tauri v2, güvenlik odaklı bir yetkilendirme sistemi sunuyor. Bu sistemde, her eklenti işlemi — dosya okuma, kabuk komutları çalıştırma, bildirim gönderme gibi — önceden tanımlanmış yetkilere sahip olmasını gerektiriyor. Eğer yetki eksikse, frontend çağrısı sessizce başarısız oluyor ve Rust kodunun hiçbir kısmı çalıştırılmıyor. Bu tasarım, uygulamanın güvenliğini artırmak için bilinçli bir tercih olsa da, geliştiriciler için ilk etapta kafa karıştırıcı olabiliyor.
Yeni bir yetkilendirme dosyası oluştururken, genellikle src-tauri/capabilities/main.json konumunda yer alan JSON yapısını kullanıyorsunuz. Aşağıda, temel bir yetkilendirme dosyasının nasıl görüneceğine dair bir örnek bulabilirsiniz:
{
"identifier": "main-capability",
"description": "Ana pencere izinleri",
"windows": ["main"],
"permissions": [
"core:default",
"fs:read-all",
"fs:write-all",
"shell:allow-execute",
"opener:allow-open",
"global-shortcut:allow-register",
"global-shortcut:allow-unregister"
]
}Bu dosyada yer alan izinler, uygulamanızın hangi eylemleri gerçekleştirebileceğini belirliyor. Örneğin, fs:read-all tüm dosyaları okuma izni verirken, shell:allow-execute kabuk komutları çalıştırma yetkisi sağlıyor. Tauri v2.1 sürümünden itibaren shell:allow-open kullanımı önerilmediğini ve bunun yerine opener:allow-open kullanılması gerektiğini unutmamak önemlidir.
Komutların Sessizce Başarısız Olduğu Durumlarda İzlenecek Adımlar
Bir komut çalıştırdığınızda hiçbir tepki alamadığınızda, sorunun kaynağını bulmak için aşağıdaki adımları izleyebilirsiniz:
- Geliştirici araçlarını açın (Tauri geliştirme modundayken
Cmd+Option+I). Konsol bölümünde reddedilmiş bir Promise veya izin hatası olup olmadığına bakın. Örneğin,plugin:shell|execute not allowedşeklinde bir hata mesajı görebilirsiniz.
- Arka uç çıktılarını kontrol edin. Rust tarafındaki hatalar,
tauri devkomutunu çalıştırdığınız terminalde doğrudan görüntüleniyor.[tauri] permission deniedveyanot allowedgibi hataların olup olmadığını araştırın.
- Detaylı loglama etkinleştirin. Daha fazla arka uç çıktısı almak için terminalde
RUST_LOG=tauri=debugkomutunu çalıştırın ve ardındantauri devkomutunu yeniden başlatın.
- Yetkilendirme dosyasını kontrol edin. En sık karşılaşılan sorunlardan biri, yetkilendirme dosyasındaki izin tanımlarının eksik veya yanlış yazılmasıdır. Yetkilendirme dosyasının en başta kontrol edilmesi gereken ilk yer olduğunu unutmayın.
En Sık Kullanılan Yetkilendirmeler ve Örnekler
Uygulama geliştirirken ihtiyaç duyacağınız yaygın izinleri aşağıdaki gibi sıralayabiliriz:
core:default— temel izinlerfs:read-all— tüm dosyaları okuma yetkisifs:write-all— tüm dosyalara yazma yetkisiopener:allow-open— URL’leri veya dosyaları açma yetkisi (eskishell:allow-openyerine)path:allow-app-data-dir— uygulama veri dizinine erişimnotification:default— bildirim gönderme yetkisiglobal-shortcut:allow-register— global kısayol kaydetme yetkisiclipboard-manager:allow-read-text— panodan metin okuma yetkisiclipboard-manager:allow-write-text— panele metin yazma yetkisi
Buna ek olarak, shell:allow-execute yetkisi artık belirli bir komut listesine izin vermeyi gerektiriyor. Örneğin, yalnızca adb komutunun çalıştırılmasına izin verirken, diğer tüm komutların yasaklanmasını sağlayabilirsiniz:
{
"identifier": "shell:allow-execute",
"allow": [{
"name": "my-cmd",
"cmd": "adb",
"args": true
}]
}Dosya Yolu Bazlı Yetkilendirmeler ve Güvenlik
Tauri, dosya sistemi erişimlerinde kapsamlı izinler sunuyor. Geliştirme aşamasında fs:read-all ve fs:write-all kullanımı kolaylık sağlasa da, üretim ortamında bu izinlerin yalnızca gerekli dizinlere sınırlandırılması güvenlik açısından daha doğru olacaktır. Örneğin, yalnızca uygulama veri dizinine erişim sağlamak için şu şekilde bir yetkilendirme tanımlayabilirsiniz:
{
"identifier": "fs:allow-app-data-read",
"allow": [{
"path": "$APPDATA/**"
}]
}Bu şekilde, uygulamanızın yalnızca gerekli dizinlere erişmesini sağlayabilir ve potansiyel güvenlik risklerini en aza indirebilirsiniz.
Sonuç ve Öneriler
Tauri v2’nin izin sistemi, uygulamanızın güvenliğini artırmak için tasarlanmış olsa da, geliştiriciler için ilk etapta kafa karıştırıcı olabiliyor. Sessiz başarısızlıklar, izinlerin doğru şekilde ayarlanmadığını gösteren önemli bir işaret olarak karşımıza çıkıyor. Özellikle bir eklenti güncellemesi sonrasında uygulamada beklenmedik davranışlar görüldüğünde, izin tanımlarının değişip değişmediğini kontrol etmek gerekiyor. Örneğin, opener yetkisinin shell:allow-open yerine kullanılmaya başlanması gibi değişiklikler, uygulamada sessiz başarısızlıklara yol açabiliyor.
Bu nedenle, herhangi bir sorunla karşılaştığınızda, yetkilendirme dosyasını ilk kontrol etmeniz gereken yer olduğunu unutmayın. Doğru izinlerin tanımlanması, Tauri uygulamalarınızın sorunsuz bir şekilde çalışmasını sağlayacaktır. Gelecekteki güncellemelerde de izin sistemindeki değişiklikleri takip etmek, uygulamanızın stabilitesini korumak açısından kritik öneme sahip.
Yapay zeka özeti
Tauri v2 uygulamalarında sessiz başarısızlıkların ardındaki izin sorunlarını çözün. Yetkilendirme dosyası ayarları, hata ayıklama adımları ve en sık kullanılan izinler hakkında detaylı bilgiler edinin.