Bekerja dengan SDK server backend .NET untuk Azure Mobile Apps

Topik ini menunjukkan kepada Anda cara menggunakan SDK server backend .NET dalam skenario Azure App Service Mobile Apps utama. Azure Mobile Apps SDK membantu Anda bekerja dengan klien seluler dari aplikasi ASP.NET Anda.

Tip

SDK server .NET untuk Azure Mobile Apps sumber terbuka di GitHub. Repositori berisi semua kode sumber termasuk seluruh rangkaian pengujian unit SDK server dan beberapa proyek sampel.

Dokumentasi rujukan

Dokumentasi referensi untuk SDK server terletak di sini: Referensi .NET Azure Mobile Apps.

Cara: Membuat backend .NET Mobile App

Jika memulai proyek baru, Anda dapat membuat aplikasi App Service menggunakan portal Azure atau Visual Studio. Anda dapat menjalankan aplikasi App Service secara lokal atau menerbitkan proyek ke aplikasi seluler App Service berbasis cloud Anda.

Jika Anda menambahkan kemampuan seluler ke proyek yang sudah ada, lihat bagian Mengunduh dan menginisialisasi SDK .

Membuat backend .NET menggunakan portal Azure

Untuk membuat backend seluler App Service, ikuti tutorial Mulai Cepat atau ikuti langkah-langkah berikut:

  1. Masuk di portal Microsoft Azure.

  2. Pilih +NEW>Web + Mobile>App, lalu berikan nama untuk back end Mobile Apps Anda.

  3. Untuk Grup Sumber Daya, pilih grup sumber daya yang sudah ada, atau buat grup sumber daya baru (dengan menggunakan nama yang sama dengan aplikasi Anda).

  4. Untuk paket App Service, paket default (di tingkat Standar) dipilih. Anda juga dapat memilih paket lain, atau membuat paket baru.

    Pengaturan paket App Service menentukan lokasi, fitur, biaya, dan sumber daya komputasi yang terkait dengan aplikasi Anda. Untuk informasi selengkapnya tentang App Service paket dan cara membuat paket baru di tingkat harga yang berbeda dan di lokasi yang Anda inginkan, lihat ringkasan mendalam paket Azure App Service.

  5. Pilih Buat. Langkah ini membuat back end Mobile Apps.

  6. Di panel Pengaturan untuk back end Mobile Apps baru, pilih Mulai> cepat platform > aplikasi klien Anda Sambungkan database.

    Pilihan untuk menyambungkan database

  7. Di panel Tambahkan koneksi data, pilih SQL Database>Buat database baru. Masukkan nama database, pilih tingkat harga, lalu pilih Server. Anda bisa menggunakan kembali database baru ini. Jika Anda sudah memiliki database di lokasi yang sama, Anda bisa memilih Gunakan database yang sudah ada. Kami tidak merekomendasikan penggunaan database di lokasi yang berbeda, karena biaya bandwidth dan latensi yang lebih tinggi.

    Memilih database

  8. Di panel Server baru , masukkan nama server unik di kotak Nama server, berikan login dan kata sandi, pilih Izinkan layanan Azure untuk mengakses server, dan pilih OK. Langkah ini membuat database baru.

  9. Kembali ke panel Tambahkan koneksi data , pilih String koneksi, masukkan nilai masuk dan kata sandi untuk database Anda, dan pilih OK.

    Tunggu beberapa menit agar database berhasil disebarkan sebelum Anda melanjutkan.

Kembali ke bilah Mulai , di bawah Buat API tabel, pilih C# sebagai bahasa Backend Anda. Klik Unduh, ekstrak file proyek terkompresi ke komputer lokal Anda, dan buka solusi di Visual Studio.

Membuat backend .NET menggunakan Visual Studio 2017

Instal beban kerja Azure melalui Alat Penginstal Visual Studio untuk menerbitkan ke proyek Azure Mobile Apps dari Visual Studio. Setelah Anda menginstal SDK, buat aplikasi ASP.NET menggunakan langkah-langkah berikut:

  1. Buka dialog Proyek Baru (dari File> ProyekBaru>...).
  2. Perluas Visual C# dan pilih Web.
  3. Pilih ASP.NET Web (.NET Framework) .
  4. Isi nama proyek. Lalu klik OK.
  5. Pilih Aplikasi Seluler Azure dari daftar templat.
  6. Klik OK untuk membuat solusi.
  7. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan..., lalu pilih App Service sebagai target penerbitan.
  8. Ikuti perintah untuk mengautentikasi dan memilih Azure App Service baru atau yang sudah ada untuk diterbitkan.

Membuat backend .NET menggunakan Visual Studio 2015

Instal Azure SDK untuk .NET (versi 2.9.0 atau yang lebih baru) untuk membuat proyek Azure Mobile Apps di Visual Studio. Setelah Anda menginstal SDK, buat aplikasi ASP.NET menggunakan langkah-langkah berikut:

  1. Buka dialog Proyek Baru (dari File> ProyekBaru>...).
  2. Perluas Templat>Visual C#, dan pilih Web.
  3. Pilih aplikasi web ASP.NET.
  4. Isi nama proyek. Lalu klik OK.
  5. Di bawah templat ASP.NET 4.5.2, pilih Aplikasi Seluler Azure. Periksa Host di cloud untuk membuat backend seluler di cloud tempat Anda dapat menerbitkan proyek ini.
  6. Klik OK.

Cara: Mengunduh dan menginisialisasi SDK

SDK tersedia di NuGet.org. Paket ini mencakup fungsionalitas dasar yang diperlukan untuk mulai menggunakan SDK. Untuk menginisialisasi SDK, Anda perlu melakukan tindakan pada objek HttpConfiguration .

Pemasangan SDK

Untuk menginstal SDK, klik kanan proyek server di Visual Studio, pilih Kelola Paket NuGet, cari paket Microsoft.Azure.Mobile.Server , lalu klik Instal.

Menginisialisasi proyek server

Proyek server backend .NET diinisialisasi mirip dengan proyek ASP.NET lainnya, dengan menyertakan kelas startup OWIN. Pastikan Anda telah mereferensikan paket Microsoft.Owin.Host.SystemWebNuGet . Untuk menambahkan kelas ini di Visual Studio, klik kanan proyek server Anda dan pilih Tambahkan>Item Baru, lalukelas Startup OWINUmum>Web>. Kelas dihasilkan dengan atribut berikut:

[assembly: OwinStartup(typeof(YourServiceName.YourStartupClassName))]

Configuration() Dalam metode kelas startup OWIN Anda, gunakan objek HttpConfiguration untuk mengonfigurasi lingkungan Azure Mobile Apps. Contoh berikut menginisialisasi proyek server tanpa fitur tambahan:

// in OWIN startup class
public void Configuration(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    new MobileAppConfiguration()
        // no added features
        .ApplyTo(config);

    app.UseWebApi(config);
}

Untuk mengaktifkan fitur individual, Anda harus memanggil metode ekstensi pada objek KonfigurasiApp Seluler sebelum memanggil ApplyTo. Misalnya, kode berikut menambahkan rute default ke semua pengontrol API yang memiliki atribut [MobileAppController] selama inisialisasi:

new MobileAppConfiguration()
    .MapApiControllers()
    .ApplyTo(config);

Mulai cepat server dari panggilan portal Azure UseDefaultConfiguration(). Ini setara dengan penyiapan berikut:

    new MobileAppConfiguration()
        .AddMobileAppHomeController()             // from the Home package
        .MapApiControllers()
        .AddTables(                               // from the Tables package
            new MobileAppTableConfiguration()
                .MapTableControllers()
                .AddEntityFramework()             // from the Entity package
            )
        .AddPushNotifications()                   // from the Notifications package
        .MapLegacyCrossDomainController()         // from the CrossDomain package
        .ApplyTo(config);

Metode ekstensi yang digunakan adalah:

  • AddMobileAppHomeController() menyediakan halaman beranda Azure Mobile Apps default.
  • MapApiControllers() menyediakan kemampuan API khusus untuk pengontrol WebAPI yang dihiasi dengan atribut [MobileAppController].
  • AddTables() menyediakan pemetaan titik akhir /tables ke pengontrol tabel.
  • AddTablesWithEntityFramework() adalah tangan pendek untuk memetakan titik akhir /tables menggunakan pengontrol berbasis Entity Framework.
  • AddPushNotifications() menyediakan metode sederhana untuk mendaftarkan perangkat untuk Notification Hubs.
  • MapLegacyCrossDomainController() menyediakan header CORS standar untuk pengembangan lokal.

Ekstensi SDK

Paket ekstensi berbasis NuGet berikut ini menyediakan berbagai fitur seluler yang dapat digunakan oleh aplikasi Anda. Anda mengaktifkan ekstensi selama inisialisasi dengan menggunakan objek MobileAppConfiguration.

  • Microsoft.Azure.Mobile.Server.Quickstart Mendukung penyiapan Aplikasi Ponsel dasar. Ditambahkan ke konfigurasi dengan memanggil metode ekstensi UseDefaultConfiguration selama inisialisasi. Ekstensi ini mencakup ekstensi berikut: Pemberitahuan, Autentikasi, Entitas, Tabel, Lintas domain, dan paket Beranda. Paket ini digunakan oleh Mulai Cepat Mobile Apps yang tersedia di portal Azure.
  • Microsoft.Azure.Mobile.Server.Home Mengimplementasikan halaman aplikasi seluler ini sedang aktif dan berjalan halaman default untuk root situs web. Tambahkan ke konfigurasi dengan memanggil metode ekstensi AddMobileAppHomeController.
  • Microsoft.Azure.Mobile.Server.Tables mencakup kelas untuk bekerja dengan data dan menyiapkan alur data. Tambahkan ke konfigurasi dengan memanggil metode ekstensi AddTables.
  • Microsoft.Azure.Mobile.Server.Entity Memungkinkan Kerangka Kerja Entitas mengakses data di SQL Database. Tambahkan ke konfigurasi dengan memanggil metode ekstensi AddTablesWithEntityFramework.
  • Microsoft.Azure.Mobile.Server.Authentication Memungkinkan autentikasi dan menyiapkan middleware OWIN yang digunakan untuk memvalidasi token. Tambahkan ke konfigurasi dengan memanggil AddAppServiceAuthentication dan IAppBuilder. Metode ekstensi UseAppServiceAuthentication.
  • Microsoft.Azure.Mobile.Server.Notifications Mengaktifkan pemberitahuan push dan menentukan titik akhir pendaftaran push. Tambahkan ke konfigurasi dengan memanggil metode ekstensi AddPushNotifications.
  • Microsoft.Azure.Mobile.Server.CrossDomain Membuat pengontrol yang menyajikan data ke browser web lama dari Aplikasi Ponsel Anda. Tambahkan ke konfigurasi dengan memanggil metode ekstensi MapLegacyCrossDomainController.
  • Microsoft.Azure.Mobile.Server.Login Menyediakan metode AppServiceLoginHandler.CreateToken(), yang merupakan metode statis yang digunakan selama skenario autentikasi kustom.

Cara: Menerbitkan proyek server

Bagian ini menunjukkan kepada Anda cara memublikasikan proyek backend .NET dari Visual Studio. Anda juga dapat menyebarkan proyek backend menggunakan Git atau metode lain yang tersedia di sana.

  1. Di Visual Studio, buat kembali proyek untuk memulihkan paket NuGet.

  2. Di Penjelajah Solusi, klik kanan proyek, klik Terbitkan. Saat pertama kali menerbitkan, Anda perlu menentukan profil penerbitan. Ketika Anda sudah memiliki profil yang ditentukan, Anda bisa memilihnya dan klik Terbitkan.

  3. Jika diminta untuk memilih target penerbitan, klik Microsoft Azure App Service>Berikutnya, lalu (jika diperlukan) masuk dengan kredensial Azure Anda. Visual Studio mengunduh dan menyimpan pengaturan penerbitan Anda dengan aman langsung dari Azure.

  4. Pilih Langganan Anda, pilih Jenis Sumber Daya dari Tampilan, perluas Aplikasi Seluler, dan klik backend Aplikasi Seluler Anda, lalu klik OK.

  5. Verifikasi informasi profil penerbitan dan klik Terbitkan.

    Saat backend Aplikasi Seluler Anda berhasil diterbitkan, Anda akan melihat halaman arahan yang menunjukkan keberhasilan.

Cara: Menentukan pengontrol tabel

Tentukan Pengontrol Tabel untuk mengekspos tabel SQL ke klien seluler. Mengonfigurasi Pengontrol Tabel memerlukan tiga langkah:

  1. Buat kelas Objek Transfer Data (DTO).
  2. Konfigurasikan referensi tabel di kelas DbContext Seluler.
  3. Buat pengontrol tabel.

Data Transfer Object (DTO) adalah objek C# polos yang mewarisi dari EntityData. Contohnya:

public class TodoItem : EntityData
{
    public string Text { get; set; }
    public bool Complete {get; set;}
}

DTO digunakan untuk menentukan tabel dalam database SQL. Untuk membuat entri database, tambahkan DbSet<> properti ke DbContext yang Anda gunakan. Dalam templat proyek default untuk Azure Mobile Apps, DbContext disebut Models\MobileServiceContext.cs:

public class MobileServiceContext : DbContext
{
    private const string connectionStringName = "Name=MS_TableConnectionString";

    public MobileServiceContext() : base(connectionStringName)
    {

    }

    public DbSet<TodoItem> TodoItems { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Add(
            new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(
                "ServiceColumnTable", (property, attributes) => attributes.Single().ColumnType.ToString()));
    }
}

Jika Anda memiliki Azure SDK yang terinstal, Anda sekarang dapat membuat pengontrol tabel templat sebagai berikut:

  1. Klik kanan pada folder Pengontrol dan pilih Tambahkan>Pengontrol... .
  2. Pilih opsi Pengontrol Tabel Azure Mobile Apps , lalu klik Tambahkan.
  3. Dalam dialog Tambahkan Pengontrol :
    • Di menu drop-down Kelas model , pilih DTO baru Anda.
    • Di menu dropdown DbContext , pilih kelas Layanan Seluler DbContext.
    • Nama Pengontrol dibuat untuk Anda.
  4. Klik Tambahkan.

Proyek server mulai cepat berisi contoh untuk TodoItemController sederhana.

Cara: Menyesuaikan ukuran halaman tabel

Secara default, Azure Mobile Apps mengembalikan 50 rekaman per permintaan. Paging memastikan bahwa klien tidak mengikat rangkaian UI atau server terlalu lama, memastikan pengalaman pengguna yang baik. Untuk mengubah ukuran paging tabel, tingkatkan sisi server "ukuran kueri yang diizinkan" dan ukuran halaman sisi klien Sisi server "ukuran kueri yang diizinkan" disesuaikan menggunakan atribut EnableQuery:

[EnableQuery(PageSize = 500)]

Pastikan PageSize sama atau lebih besar dari ukuran yang diminta oleh klien. Lihat dokumentasi HOWTO klien tertentu untuk detail tentang mengubah ukuran halaman klien.

Cara: Menentukan pengontrol API kustom

Pengontrol API kustom menyediakan fungsionalitas paling dasar ke backend Aplikasi Ponsel Anda dengan mengekspos titik akhir. Anda dapat mendaftarkan pengontrol API khusus seluler menggunakan atribut [MobileAppController]. Atribut MobileAppController mendaftarkan rute, menyiapkan serializer JSON Mobile Apps, dan mengaktifkan pemeriksaan versi klien.

  1. Di Visual Studio, klik kanan folder Pengontrol, lalu klik Tambahkan>Pengontrol, pilih Pengontrol API Web 2—Kosong dan klik Tambahkan.

  2. Berikan nama Pengontrol, seperti CustomController, dan klik Tambahkan.

  3. Dalam file kelas pengontrol baru, tambahkan pernyataan penggunaan berikut:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. Terapkan atribut [MobileAppController] ke definisi kelas pengontrol API, seperti dalam contoh berikut:

     [MobileAppController]
     public class CustomController : ApiController
     {
           //...
     }
    
  5. Dalam file App_Start/Startup.MobileApp.cs, tambahkan panggilan ke metode ekstensi MapApiControllers , seperti dalam contoh berikut:

     new MobileAppConfiguration()
         .MapApiControllers()
         .ApplyTo(config);
    

Anda juga dapat menggunakan UseDefaultConfiguration() metode ekstensi alih-alih MapApiControllers(). Pengontrol apa pun yang tidak memiliki MobileAppControllerAttribute yang diterapkan masih dapat diakses oleh klien, tetapi mungkin tidak digunakan dengan benar oleh klien menggunakan SDK klien Aplikasi Seluler apa pun.

Cara: Bekerja dengan autentikasi

Azure Mobile Apps menggunakan Autentikasi/Otorisasi App Service untuk mengamankan backend seluler Anda. Bagian ini menunjukkan kepada Anda cara melakukan tugas terkait autentikasi berikut di proyek server backend .NET Anda:

Cara: Menambahkan autentikasi ke proyek server

Anda dapat menambahkan autentikasi ke proyek server Anda dengan memperluas objek MobileAppConfiguration dan mengonfigurasi middleware OWIN. Saat Anda menginstal paket Microsoft.Azure.Mobile.Server.Quickstart dan memanggil metode ekstensi UseDefaultConfiguration , Anda dapat melompat ke langkah 3.

  1. Di Visual Studio, instal paket Microsoft.Azure.Mobile.Server.Authentication.

  2. Dalam file proyek Startup.cs, tambahkan baris kode berikut di awal metode Konfigurasi :

     app.UseAppServiceAuthentication(config);
    

    Komponen middleware OWIN ini memvalidasi token yang dikeluarkan oleh gateway App Service terkait.

  3. Tambahkan atribut [Authorize] ke pengontrol atau metode apa pun yang memerlukan autentikasi.

Untuk mempelajari tentang cara mengautentikasi klien ke backend Mobile Apps Anda, lihat Menambahkan autentikasi ke aplikasi Anda.

Cara: Menggunakan autentikasi kustom untuk aplikasi Anda

Penting

Untuk mengaktifkan autentikasi kustom, Anda harus terlebih dahulu mengaktifkan Autentikasi App Service tanpa memilih penyedia untuk Layanan Aplikasi Anda di portal Azure. Ini akan mengaktifkan variabel lingkungan WEBSITE_AUTH_SIGNING_KEY saat dihosting.

Jika Anda tidak ingin menggunakan salah satu penyedia Autentikasi/Otorisasi App Service, Anda dapat menerapkan sistem masuk Anda sendiri. Instal paket Microsoft.Azure.Mobile.Server.Login untuk membantu pembuatan token autentikasi. Berikan kode Anda sendiri untuk memvalidasi info masuk pengguna. Misalnya, Anda dapat memeriksa kata sandi dengan salt dan hash dalam database. Pada contoh di bawah ini, metode isValidAssertion() (didefinisikan di tempat lain) bertanggung jawab atas pemeriksaan ini.

Autentikasi kustom diekspos dengan membuat ApiController dan mengekspos tindakan register serta login. Klien harus menggunakan UI khusus untuk mengumpulkan informasi dari pengguna. Informasi kemudian diserahkan ke API dengan panggilan HTTP POST standar. Setelah server memvalidasi pernyataan, token dikeluarkan menggunakan metode AppServiceLoginHandler.CreateToken(). ApiController tidak boleh menggunakan atribut [MobileAppController].

Contoh tindakan login:

    public IHttpActionResult Post([FromBody] JObject assertion)
    {
        if (isValidAssertion(assertion)) // user-defined function, checks against a database
        {
            JwtSecurityToken token = AppServiceLoginHandler.CreateToken(new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
                mySigningKey,
                myAppURL,
                myAppURL,
                TimeSpan.FromHours(24) );
            return Ok(new LoginResult()
            {
                AuthenticationToken = token.RawData,
                User = new LoginResultUser() { UserId = userName.ToString() }
            });
        }
        else // user assertion was not valid
        {
            return this.Request.CreateUnauthorizedResponse();
        }
    }

Dalam contoh sebelumnya, LoginResult dan LoginResultUser adalah objek yang dapat diserialisasikan yang mengekspos properti yang diperlukan. Klien mengharapkan respons masuk ditampilkan sebagai objek JSON dari formulir:

    {
        "authenticationToken": "<token>",
        "user": {
            "userId": "<userId>"
        }
    }

Metode AppServiceLoginHandler.CreateToken() mencakup parameter audience dan issuer. Kedua parameter ini diatur ke URL root aplikasi Anda, menggunakan skema HTTPS. Demikian pula Anda harus mengatur secretKey menjadi nilai kunci penandatanganan aplikasi Anda. Jangan mendistribusikan kunci penandatanganan di klien karena dapat digunakan untuk mencetak kunci dan meniru pengguna. Anda dapat memperoleh kunci penandatanganan saat dihosting di App Service dengan mereferensikan variabel lingkungan WEBSITE_AUTH_SIGNING_KEY. Jika diperlukan dalam konteks penelusuran kesalahan lokal, ikuti petunjuk di bagian Penelusuran kesalahan lokal dengan autentikasi untuk mengambil kunci dan menyimpannya sebagai pengaturan aplikasi.

Token yang dikeluarkan juga dapat mencakup klaim lain dan tanggal kedaluwarsa. Minimal, token yang dikeluarkan harus menyertakan klaim subjek (sub).

Anda dapat mendukung metode klien loginAsync() standar dengan membebani rute autentikasi. Jika klien memanggil client.loginAsync('custom'); untuk masuk, rute Anda harus berupa /.auth/login/custom. Anda dapat mengatur rute untuk pengontrol autentikasi kustom menggunakan MapHttpRoute():

config.Routes.MapHttpRoute("custom", ".auth/login/custom", new { controller = "CustomAuth" });

Tip

Menggunakan pendekatan loginAsync() memastikan bahwa token autentikasi dilampirkan ke setiap panggilan berikutnya ke layanan.

Cara: Mengambil informasi pengguna yang diautentikasi

Saat pengguna diautentikasi oleh App Service, Anda dapat mengakses ID pengguna yang ditetapkan dan informasi lainnya dalam kode backend .NET Anda. Informasi pengguna dapat digunakan untuk membuat keputusan otorisasi di backend. Kode berikut memperoleh ID pengguna yang terkait dengan permintaan:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

SID berasal dari ID pengguna khusus penyedia dan statis untuk pengguna dan penyedia masuk tertentu. SID adalah null untuk token autentikasi yang tidak valid.

App Service juga memungkinkan Anda meminta klaim tertentu dari penyedia masuk Anda. Setiap penyedia identitas dapat memberikan informasi lebih lanjut menggunakan SDK penyedia identitas. Misalnya, Anda dapat menggunakan Facebook Graph API untuk informasi teman. Anda dapat menentukan klaim yang diminta di bilah penyedia di portal Azure. Beberapa klaim memerlukan konfigurasi tambahan dengan IdP.

Kode berikut memanggil metode ekstensi GetAppServiceIdentityAsync untuk mendapatkan info masuk, yang mencakup token akses yang diperlukan untuk membuat permintaan terhadap Facebook Graph API:

// Get the credentials for the logged-in user.
var credentials =
    await this.User
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
        + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(fbRequestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}

Tambahkan menggunakan pernyataan System.Security.Principal untuk menyediakan metode ekstensi GetAppServiceIdentityAsync.

Cara: Membatasi akses data untuk pengguna yang berwenang

Di bagian sebelumnya, kami menunjukkan cara mengambil ID pengguna untuk pengguna yang diautentikasi. Anda dapat membatasi akses ke data dan sumber daya lainnya berdasarkan nilai ini. Misalnya, menambahkan kolom userId ke tabel dan memfilter hasil kueri berdasarkan ID pengguna adalah cara sederhana untuk membatasi data yang dikembalikan hanya untuk pengguna yang berwenang. Kode berikut mengembalikan baris data hanya saat SID cocok dengan nilai di kolom UserId pada tabel TodoItem:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

// Only return data rows that belong to the current user.
return Query().Where(t => t.UserId == sid);

Metode Query() menampilkan IQueryable yang dapat dimanipulasi oleh LINQ untuk menangani pemfilteran.

Cara: Menambahkan pemberitahuan push ke proyek server

Tambahkan pemberitahuan push ke proyek server Anda dengan memperluas objek MobileAppConfiguration dan membuat klien Notification Hubs.

  1. Di Visual Studio, klik kanan proyek server dan klik Kelola Paket NuGet, cari Microsoft.Azure.Mobile.Server.Notifications, lalu klik Instal.

  2. Ulangi langkah ini untuk menginstal Microsoft.Azure.NotificationHubs paket, yang mencakup pustaka klien Notification Hubs.

  3. Di App_Start/Startup.MobileApp.cs, dan tambahkan panggilan ke metode ekstensi AddPushNotifications() selama inisialisasi :

     new MobileAppConfiguration()
         // other features...
         .AddPushNotifications()
         .ApplyTo(config);
    
  4. Tambahkan kode berikut yang membuat klien Notification Hubs:

     // Get the settings for the server project.
     HttpConfiguration config = this.Configuration;
     MobileAppSettingsDictionary settings =
         config.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
     // Get the Notification Hubs credentials for the Mobile App.
     string notificationHubName = settings.NotificationHubName;
     string notificationHubConnection = settings
         .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
     // Create a new Notification Hub client.
     NotificationHubClient hub = NotificationHubClient
         .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    

Sekarang Anda dapat menggunakan klien Notification Hubs untuk mengirim pemberitahuan push ke perangkat terdaftar. Untuk informasi selengkapnya, lihat Menambahkan pemberitahuan push ke aplikasi Anda. Untuk mempelajari selengkapnya tentang Notification Hubs, lihat Gambaran Umum Notification Hubs.

Cara: Mengaktifkan pendorongan yang ditargetkan menggunakan Tag

Notification Hubs memungkinkan Anda mengirim pemberitahuan yang ditargetkan ke pendaftaran tertentu dengan menggunakan tag. Beberapa tag dibuat secara otomatis:

  • ID Penginstalan mengidentifikasi perangkat tertentu.
  • Id Pengguna berdasarkan SID terautentikasi mengidentifikasi pengguna tertentu.

ID penginstalan dapat diakses dari properti installationId di MobileServiceClient. Contoh berikut menunjukkan cara menggunakan ID penginstalan untuk menambahkan tag ke penginstalan tertentu di Notification Hubs:

hub.PatchInstallation("my-installation-id", new[]
{
    new PartialUpdateOperation
    {
        Operation = UpdateOperationType.Add,
        Path = "/tags",
        Value = "{my-tag}"
    }
});

Tag apa pun yang disediakan oleh klien selama pendaftaran pemberitahuan push diabaikan oleh backend saat membuat penginstalan. Untuk mengaktifkan klien untuk menambahkan tag ke penginstalan, Anda harus membuat API kustom yang menambahkan tag menggunakan pola sebelumnya.

Lihat Tag pemberitahuan push yang ditambahkan klien di App Service Mobile Apps menyelesaikan sampel mulai cepat misalnya.

Cara: Mengirim pemberitahuan push ke pengguna yang diautentikasi

Saat pengguna terautentikasi mendaftar untuk pemberitahuan push, tag ID pengguna secara otomatis ditambahkan ke pendaftaran. Dengan menggunakan tag ini, Anda dapat mengirim pemberitahuan push ke semua perangkat yang didaftarkan oleh orang tersebut. Kode berikut mendapatkan SID pengguna yang membuat permintaan dan mengirim pemberitahuan push templat ke setiap pendaftaran perangkat untuk orang tersebut:

// Get the current user SID and create a tag for the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;
string userTag = "_UserId:" + sid;

// Build a dictionary for the template with the item message text.
var notification = new Dictionary<string, string> { { "message", item.Text } };

// Send a template notification to the user ID.
await hub.SendTemplateNotificationAsync(notification, userTag);

Saat mendaftar untuk pemberitahuan push dari klien yang diautentikasi, pastikan autentikasi selesai sebelum mencoba pendaftaran. Untuk informasi selengkapnya, lihat Mendorong ke pengguna di App Service Mobile Apps menyelesaikan sampel mulai cepat untuk backend .NET.

Cara: Men-debug dan memecahkan masalah .NET Server SDK

Azure App Service menyediakan beberapa teknik penelusuran kesalahan dan pemecahan masalah untuk aplikasi ASP.NET:

Pembuatan Log

Anda dapat menulis ke log diagnostik App Service menggunakan penulisan jejak ASP.NET standar. Sebelum dapat menulis ke log, Anda harus mengaktifkan diagnostik di backend Mobile App Anda.

Untuk mengaktifkan diagnostik dan menulis ke log:

  1. Ikuti langkah-langkah dalam Mengaktifkan pengelogan aplikasi (Windows).

  2. Tambahkan yang berikut ini menggunakan pernyataan dalam file kode Anda:

     using System.Web.Http.Tracing;
    
  3. Buat penulis jejak untuk menulis dari backend .NET ke log diagnostik, sebagai berikut:

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. Terbitkan ulang proyek server Anda, dan akses backend Aplikasi Seluler untuk menjalankan jalur kode dengan pengelogan.

  5. Unduh dan evaluasi log, seperti yang dijelaskan dalam Mengakses file log.

Penelusuran kesalahan lokal dengan autentikasi

Anda dapat menjalankan aplikasi secara lokal untuk menguji perubahan sebelum menerbitkannya ke cloud. Untuk sebagian besar backend Azure Mobile Apps, tekan F5 saat berada di Visual Studio. Namun, ada beberapa pertimbangan tambahan saat menggunakan autentikasi.

Anda harus memiliki aplikasi seluler berbasis cloud dengan Autentikasi/Otorisasi App Service yang dikonfigurasi, dan klien harus memiliki titik akhir cloud yang ditentukan sebagai host masuk alternatif. Lihat dokumentasi untuk platform klien Anda untuk langkah spesifik yang diperlukan.

Pastikan backend seluler Anda telah menginstal Microsoft.Azure.Mobile.Server.Authentication. Kemudian, di kelas startup OWIN aplikasi, tambahkan berikut ini, setelah MobileAppConfiguration diterapkan ke HttpConfiguration:

    app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
    {
        SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
        ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
        ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
        TokenHandler = config.GetAppServiceTokenHandler()
    });

Dalam contoh sebelumnya, Anda harus mengonfigurasi pengaturan aplikasi authAudience dan authIssuer dalam file Web.config untuk masing-masing menjadi URL root aplikasi Anda, menggunakan skema HTTPS. Demikian pula Anda harus mengatur authSigningKey untuk menjadi nilai kunci penandatanganan aplikasi Anda. Untuk mendapatkan kunci penandatanganan:

  1. Buka aplikasi dalam Portal Azure
  2. Klik Alat, Kudu, Buka.
  3. Di situs Pengelolaan Kudu, klik Lingkungan.
  4. Temukan nilai untuk WEBSITE_AUTH_SIGNING_KEY.

Gunakan kunci penandatanganan untuk parameter authSigningKey di konfigurasi aplikasi lokal. Backend seluler Anda sekarang dilengkapi untuk memvalidasi token saat berjalan secara lokal, yang diperoleh klien token dari titik akhir berbasis cloud.