Bạn có thể sử dụng Firebase Authentication để cho phép người dùng xác thực bằng Firebase bằng địa chỉ email và mật khẩu của họ, cũng như để quản lý các tài khoản dựa trên mật khẩu của ứng dụng.
Trước khi bắt đầu
Sử dụng Trình quản lý gói Swift để cài đặt và quản lý các phần phụ thuộc Firebase.
- Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy chuyển đến Tệp > Thêm gói.
- Khi được nhắc, hãy thêm kho lưu trữ SDK nền tảng Apple của Firebase:
- Chọn thư viện Firebase Authentication.
- Thêm cờ
-ObjC
vào phần Other Linker Flags (Cờ trình liên kết khác) trong chế độ cài đặt bản dựng của mục tiêu. - Khi hoàn tất, Xcode sẽ tự động bắt đầu phân giải và tải xuống các phần phụ thuộc trong nền.
https://github.com/firebase/firebase-ios-sdk.git
Tiếp theo, hãy thực hiện một số bước định cấu hình:
- Nếu bạn chưa kết nối ứng dụng của mình với dự án Firebase, hãy thực hiện từ bảng điều khiển Firebase.
- Bật tính năng Đăng nhập bằng email/mật khẩu:
- Trong bảng điều khiển Firebase, hãy mở phần Auth (Xác thực).
- Trên thẻ Phương thức đăng nhập, hãy bật phương thức đăng nhập Email/mật khẩu rồi nhấp vào Lưu.
Tạo tài khoản dựa trên mật khẩu
Để tạo tài khoản người dùng mới có mật khẩu, hãy hoàn tất các bước sau trong hoạt động đăng nhập của ứng dụng của bạn:
- Nhập mô-đun
FirebaseCore
trongUIApplicationDelegate
, cũng như mọi mô-đun Firebase khác mà ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Định cấu hình một thực thể dùng chung
FirebaseApp
trong phương thứcapplication(_:didFinishLaunchingWithOptions:)
của uỷ quyền ứng dụng:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một trình uỷ quyền ứng dụng và đính kèm trình uỷ quyền đó vào cấu trúc
App
thông quaUIApplicationDelegateAdaptor
hoặcNSApplicationDelegateAdaptor
. Bạn cũng phải tắt tính năng uỷ quyền ứng dụng. Để hãy xem hướng dẫn về SwiftUI để biết thêm thông tin.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Khi người dùng mới đăng ký bằng biểu mẫu đăng ký của ứng dụng, hãy hoàn tất mọi bước xác thực tài khoản mới mà ứng dụng của bạn yêu cầu, chẳng hạn như xác minh rằng mật khẩu của tài khoản mới đã được nhập chính xác và đáp ứng các yêu cầu về độ phức tạp.
- Tạo tài khoản mới bằng cách truyền địa chỉ email và mật khẩu của người dùng mới vào
createUser
.Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // ... }
Objective-C
[[FIRAuth auth] createUserWithEmail:email password:password completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Đăng nhập người dùng bằng địa chỉ email và mật khẩu
Các bước để đăng nhập vào người dùng bằng mật khẩu tương tự như các bước để tạo tài khoản mới. Trong hoạt động đăng nhập của ứng dụng, hãy làm như sau:
- Nhập mô-đun
FirebaseCore
trongUIApplicationDelegate
, cũng như mọi mô-đun Firebase khác mà ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Định cấu hình một thực thể dùng chung
FirebaseApp
trong phương thứcapplication(_:didFinishLaunchingWithOptions:)
của uỷ quyền ứng dụng:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một ứng dụng uỷ quyền và đính kèm nó
đến cấu trúc
App
của bạn thông quaUIApplicationDelegateAdaptor
hoặcNSApplicationDelegateAdaptor
. Bạn cũng phải tắt tính năng uỷ quyền ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn về SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Khi người dùng đăng nhập vào ứng dụng của bạn, hãy chuyển địa chỉ email của người dùng và
mật khẩu đăng nhập vào
signIn
.Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in guard let strongSelf = self else { return } // ... }
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text password:self->_passwordField.text completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Nên làm: Đặt chính sách mật khẩu
Bạn có thể tăng cường bảo mật tài khoản bằng cách thực thi các yêu cầu về độ phức tạp của mật khẩu.
Để định cấu hình chính sách mật khẩu cho dự án, hãy mở thẻ Password policy (Chính sách mật khẩu) trên trang Authentication Settings (Cài đặt xác thực) của bảng điều khiển Firebase:
Chính sách mật khẩu của Firebase Authentication hỗ trợ các yêu cầu sau đây về mật khẩu:
Bắt buộc phải viết thường
Phải viết hoa ký tự
Bắt buộc phải có ký tự số
Bắt buộc phải có ký tự không phải là chữ và số
Các ký tự sau đáp ứng yêu cầu về ký tự không phải chữ và số:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
Độ dài mật khẩu tối thiểu (dao động từ 6 đến 30 ký tự; mặc định là 6)
Độ dài mật khẩu tối đa (độ dài tối đa 4096 ký tự)
Bạn có thể bật tính năng thực thi chính sách mật khẩu theo hai chế độ:
Bắt buộc: Người dùng sẽ không đăng nhập được cho đến khi cập nhật mật khẩu tuân thủ chính sách của bạn.
Thông báo: Người dùng được phép đăng nhập bằng mật khẩu không tuân thủ. Thời gian khi sử dụng chế độ này, bạn nên kiểm tra xem mật khẩu của người dùng có tuân thủ chính sách ở phía máy khách và nhắc người dùng cập nhật nếu không tuân thủ.
Người dùng mới luôn phải chọn mật khẩu tuân thủ chính sách của bạn.
Nếu có người dùng đang hoạt động, bạn không nên bật chế độ yêu cầu trừ phi bạn nhằm chặn quyền truy cập đối với những người dùng có mật khẩu không tuân thủ chính sách của bạn. Thay vào đó, hãy sử dụng chế độ thông báo, chế độ này cho phép người dùng đăng nhập bằng tài khoản mật khẩu và thông báo cho người dùng về các yêu cầu mà mật khẩu của họ không có.
Đề xuất: Bật tính năng bảo vệ liệt kê email
Một số phương thức Firebase Authentication lấy địa chỉ email làm tham số gửi các lỗi cụ thể nếu địa chỉ email bị huỷ đăng ký khi phải đăng ký địa chỉ đó (ví dụ: khi đăng nhập bằng địa chỉ email và mật khẩu) hoặc đã đăng ký khi không sử dụng đến (ví dụ: khi thay đổi địa chỉ email của người dùng). Mặc dù tính năng này có thể hữu ích trong việc đề xuất biện pháp khắc phục cụ thể cho người dùng, nhưng các bên độc hại cũng có thể lợi dụng tính năng này để khám phá địa chỉ email mà người dùng của bạn đã đăng ký.
Để giảm thiểu rủi ro này, bạn nên bật tính năng bảo vệ liệt kê email
cho dự án của mình bằng công cụ gcloud
của Google Cloud. Lưu ý rằng việc bật tính năng này
tính năng thay đổi hành vi báo cáo lỗi của Firebase Authentication: hãy đảm bảo ứng dụng của bạn
Không dựa vào các lỗi cụ thể hơn.
Các bước tiếp theo
Sau khi người dùng đăng nhập lần đầu, một tài khoản người dùng mới sẽ được tạo và liên kết với thông tin xác thực (tức là tên người dùng và mật khẩu, số điện thoại hoặc thông tin về nhà cung cấp dịch vụ xác thực) mà người dùng đã đăng nhập. Tài khoản mới này được lưu trữ trong dự án Firebase và có thể được dùng để xác định người dùng trên mọi ứng dụng trong dự án, bất kể người dùng đăng nhập như thế nào.
-
Trong ứng dụng, bạn có thể lấy thông tin hồ sơ cơ bản của người dùng từ đối tượng
User
. Xem phần Quản lý người dùng. Trong Firebase Realtime Database và Cloud Storage của bạn Quy tắc bảo mật, bạn có thể lấy mã nhận dạng người dùng duy nhất của người dùng đã đăng nhập từ biến
auth
, để kiểm soát loại dữ liệu mà người dùng có thể truy cập.
Bạn có thể cho phép người dùng đăng nhập vào ứng dụng của bạn bằng nhiều trình cung cấp dịch vụ xác thực bằng cách liên kết thông tin xác thực của trình cung cấp dịch vụ xác thực với một tài khoản người dùng hiện có.
Để đăng xuất một người dùng, hãy gọi
signOut:
.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Bạn cũng nên thêm mã xử lý lỗi cho toàn bộ phạm vi xác thực . Hãy xem bài viết Xử lý lỗi.