Saya baru mengenal AngularJS dan telah melalui tutorial mereka dan merasakannya.
Saya memiliki backend untuk proyek saya yang siap di mana masing-masing REST
titik akhir perlu diautentikasi.
Apa yang ingin saya lakukan
a.) Saya ingin memiliki satu halaman untuk proyek saya http://myproject.com
.
b.) Setelah pengguna menekan URL di browser, berdasarkan apakah pengguna masuk atau tidak, dia disajikan dengan halaman beranda / tampilan atau halaman login / tampilan di bawah url yang sama http://myproject.com
.
c.) jika pengguna tidak masuk, itu mengisi formulir dan server menetapkan USER_TOKEN
sesi dalam, sehingga semua permintaan lebih lanjut ke titik akhir akan diautentikasi berdasarkanUSER_TOKEN
Kebingungan Saya
a.) Bagaimana cara menangani otentikasi sisi klien menggunakan AngularJS? Saya melihat di sini dan di sini tetapi tidak mengerti cara menggunakannya
b.) Bagaimana saya bisa menyajikan tampilan berbeda kepada pengguna berdasarkan apakah pengguna masuk atau tidak di bawah url yang samahttp://myproject.com
Saya menggunakan angular.js untuk pertama kalinya dan benar-benar bingung bagaimana memulainya. Setiap saran dan / atau sumber sangat dihargai.
sumber
Jawaban:
Saya telah membuat repo github yang merangkum artikel ini pada dasarnya: https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec
ng-login repo Github
Plunker
Saya akan mencoba menjelaskan sebaik mungkin, semoga saya membantu beberapa dari Anda di luar sana:
(1) app.js: Pembuatan konstanta autentikasi pada definisi aplikasi
(2) Layanan Auth: Semua fungsi berikut diimplementasikan dalam layanan auth.js. Layanan $ http digunakan untuk berkomunikasi dengan server untuk prosedur otentikasi. Juga berisi fungsi tentang otorisasi, yaitu jika pengguna diizinkan untuk melakukan tindakan tertentu.
(3) Sesi: Singleton untuk menyimpan data pengguna. Penerapannya di sini bergantung pada Anda.
(4) Pengontrol induk: Anggap ini sebagai fungsi "utama" aplikasi Anda, semua pengontrol mewarisi dari pengontrol ini, dan ini adalah tulang punggung autentikasi aplikasi ini.
(5) Kontrol akses: Untuk menolak akses pada rute tertentu, 2 langkah harus dilaksanakan:
a) Tambahkan data dari peran yang diizinkan untuk mengakses setiap rute, pada layanan $ stateProvider ui router seperti yang dapat dilihat di bawah (hal yang sama dapat bekerja untuk ngRoute).
b) Di $ rootScope. $ on ('$ stateChangeStart') tambahkan fungsi untuk mencegah perubahan status jika pengguna tidak diizinkan.
(6) Pencegat auth: Ini diterapkan, tetapi tidak dapat diperiksa pada cakupan kode ini. Setelah setiap permintaan $ http, interseptor ini memeriksa kode status, jika salah satu dari di bawah ini dikembalikan, maka ia menyiarkan acara untuk memaksa pengguna untuk masuk lagi.
PS Bug dengan form data autofill seperti yang tertera pada artikel pertama dapat dengan mudah dihindari dengan menambahkan direktif yang terdapat pada directives.js.
PS2 Kode ini dapat dengan mudah diubah oleh pengguna, untuk memungkinkan rute yang berbeda untuk dilihat, atau menampilkan konten yang tidak dimaksudkan untuk ditampilkan. Logika HARUS diterapkan di sisi server, ini hanyalah cara untuk menampilkan berbagai hal dengan benar di aplikasi ng Anda.
sumber
authService.login() = [...]
tanda kurung siku itu akan mewakili sesuatu seperti$http.get(url, {uID, pwd}
? ~~ ok, lihat ke plunker, seperti yang saya katakan XDSaya suka pendekatannya dan menerapkannya di sisi server tanpa melakukan hal apa pun yang terkait dengan otentikasi di front-end
Carilah komentar dari "Andrew Joslin".
https://groups.google.com/forum/?fromgroups=#!searchin/angular/authentication/angular/POXLTi_JUgg/VwStpoWCPUQJ
sumber
Saya menjawab pertanyaan serupa di sini: AngularJS Authentication + RESTful API
Saya telah menulis modul AngularJS untuk UserApp yang mendukung rute dilindungi / publik, perutean ulang saat masuk / keluar, detak jantung untuk pemeriksaan status, menyimpan token sesi dalam cookie, acara, dll.
Anda bisa:
https://github.com/userapp-io/userapp-angular
Jika Anda menggunakan UserApp, Anda tidak perlu menulis kode sisi server apa pun untuk barang-barang pengguna (lebih dari memvalidasi token). Ikuti kursus di Codecademy untuk mencobanya.
Berikut beberapa contoh cara kerjanya:
Cara menentukan rute mana yang harus publik, dan rute mana yang merupakan formulir login:
The
.otherwise()
rute harus ditetapkan ke mana Anda ingin pengguna Anda akan diarahkan setelah login. Contoh:$routeProvider.otherwise({redirectTo: '/home'});
Formulir login dengan penanganan error:
Formulir pendaftaran dengan penanganan kesalahan:
Tautan keluar:
<a href="#" ua-logout>Log Out</a>
(Mengakhiri sesi dan dialihkan ke rute login)
Akses properti pengguna:
Properti pengguna diakses menggunakan
user
layanan, misalnya:user.current.email
Atau di template:
<span>{{ user.email }}</span>
Sembunyikan elemen yang seharusnya hanya terlihat saat masuk:
<div ng-show="user.authorized">Welcome {{ user.first_name }}!</div>
Tunjukkan elemen berdasarkan izin:
<div ua-has-permission="admin">You are an admin</div>
Dan untuk mengotentikasi ke layanan back-end Anda, cukup gunakan
user.token()
untuk mendapatkan token sesi dan kirimkan dengan permintaan AJAX. Di bagian belakang, gunakan UserApp API (jika Anda menggunakan UserApp) untuk memeriksa apakah token itu valid atau tidak.Jika Anda butuh bantuan, beri tahu saya!
sumber
Di angularjs Anda dapat membuat bagian UI, layanan, Direktif, dan semua bagian dari angularjs yang mewakili UI. Ini adalah teknologi yang bagus untuk dikerjakan.
Sebagai orang yang baru mengenal teknologi ini dan ingin mengotentikasi "Pengguna" maka saya sarankan untuk melakukannya dengan kekuatan api web c #. untuk itu, Anda dapat menggunakan spesifikasi OAuth yang akan membantu Anda membangun mekanisme keamanan yang kuat untuk mengautentikasi pengguna. setelah Anda membangun WebApi dengan OAuth, Anda perlu memanggil api itu untuk token:
dan setelah Anda mendapatkan token maka Anda meminta sumber daya dari angularjs dengan bantuan Token dan mengakses sumber daya yang disimpan aman di Api web dengan spesifikasi OAuth.
Silakan lihat artikel di bawah ini untuk bantuan lebih lanjut: -
http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/
sumber
Dan apa yang terjadi jika pengguna menangkap de JSON dan mengubah bool menjadi True?
Saya pikir Anda tidak boleh mengandalkan sisi klien untuk melakukan hal-hal semacam ini. Jika pengguna tidak diautentikasi, server sebaiknya mengarahkan ulang ke halaman login / kesalahan.
sumber
sumber