Cải thiện trải nghiệm Xác thực 2 yếu tố với HTML

Ngày đăng: 11/01/2020   -    Cập nhật: 13/05/2020
Có rất nhiều cơ hội để gia tăng trải nghiệm người dùng khi đăng nhập, đặc biệt là khi nhập mã xác thực hai yếu tố.


Là lập trình viên đứng ở quan điểm kinh doanh, chúng ta nên xây dựng các ứng dụng hỗ trợ nhu cầu bảo mật tài khoản nhưng không làm mất đi trải nghiệm người dùng.


Nhưng nói thì dễ, làm thì mới khó.


Bởi lẽ, bảo mật và trải nghiệm như đứng ở hai phía đối lập.


Tuy nhiên...


Cũng có những cách gia tăng trải nghiệm người dùng rất đơn giản chỉ với HTML.



Cải thiện trải nghiệm người dùng với HTML

Cải thiện trải nghiệm người dùng với HTML


Trong bài viết này, chúng ta sẽ xem xét đến phần tử <input> và các thuộc tính HTML sẽ giúp gia tăng trải nghiệm xác thực hai yếu tố..


Trải nghiệm xác thực 2 yếu tố mặc định



Khi bạn triển khai xác thực hai yếu tố cho một ứng dụng web, có lẽ với API nào đó, bạn sẽ cần một biểu mẫu để người dùng của bạn nhập mã khi bạn gửi cho họ qua tin nhắn di động.


Bạn có thể tạo một cái gì đó tương tự như HTML sau:



<form action="/sessions/check-2fa" method="POST">
  <div>
    <label for="token">Please enter the code you were sent:</label>
    <input type="text" name="token" id="token" />
  </div>
  <button type="submit">Check token</button>
</form>


Đây là một cách làm mặc định khá tốt.


<input> có name và id duy nhất và <label> đang sử dụng thuộc tính chính xác để liên kết rõ ràng với nó, điều này rất quan trọng đối với khả năng truy cập.


Bạn cũng có thể bọc <label> xung quanh <input> để có hiệu ứng tương tự.


Thêm một chút CSS, cái này có thể trông giống như thế này:



Xác thực 2 yếu tố mặc định (Ảnh minh họa)

Xác thực 2 yếu tố mặc định (Ảnh minh họa)

 

Tuy nhiên, chúng ta không nên dừng ở đây.


Chúng ta có thể tăng dần trải nghiệm chỉ với một vài thuộc tính HTML nữa.



Lấy đúng bàn phím



Trên điện thoại di động hoặc thiết bị có bàn phím trên màn hình, điều đầu tiên cần chú ý là chúng ta lấy đúng loại bàn phím.


Mật khẩu / mã code bằng các ký tự số thì tốt hơn hết là lấy bàn phím số để cho người dùng nhập.


Bạn có thể nghĩ rằng việc chuyển type của <input> từ "text" sang "number":



    <input type="number" name="token" id="token" />

Bạn sẽ SAI.


Mặc dù, điều này không kích hoạt một bàn phím khác trên iOS, nhưng nó vẫn bao gồm một số phím vô dụng.



Lấy bàn phím số bằng thuộc tính type (Ảnh minh họa)

Lấy bàn phím số bằng thuộc tính type (Ảnh minh họa)


Thay đổi type là thay đổi cách trình duyệt diễn giải trường đó.


Nó cũng có thể gây ra lỗi.


Nếu mã xác thực hai yếu tố bắt đầu bằng 0, trường number có thể giảm đi mất số 0 đó.


Vì thế, chúng ta có:



inputmode



Thuộc tính inputmode thay đổi bàn phím mà trình duyệt sẽ hiển thị mà không thay đổi ý nghĩa của dữ liệu mà trường thu thập.


Chúng ta muốn <input> của chúng ta nhận đầu vào dạng text, nhưng từ bàn phím số.


Vì vậy, chúng ta thêm inputmode="nummeric"




    <input type="number" name="token" id="token" inputmode="numeric" />

inputmode có một số giá trị khác, bao gồm "tel" cho các số điện thoại, "email", "decimal", "url", "search" và "none" trong trường hợp bạn muốn kết xuất bàn phím của riêng mình.


Cụ thể về các giá trị này bạn có thể tham khảo thêm tại đây:


 


Ngày nay, hỗ trợ trình duyệt cho inputmode rất tốt cho các hệ điều hành di động, nhưng một vài năm trước đây thì rất tệ.


Đối với các trình duyệt cũ hơn, có một mẹo khác để kích hoạt bàn phím số bao gồm một chút xác thực bổ sung khác.



pattern



Thuộc tính pattern cho phép bạn xác thực nội dung của đầu vào bằng biểu thức chính quy.




Sử dụng pattern [0-9]* để cho trình duyệt biết rằng chúng ta chỉ chấp nhận các số trong trường và cũng kích hoạt bàn phím số trong các trình duyệt mà không có hỗ trợ inputmode.


Bây giờ, HTML của chúng ta sẽ trông như thế này:



<input
  type="text"
  name="token"
  id="token"
  inputmode="numeric"
  pattern="[0-9]*"
/>


Và bàn phím nhập mã code trở nên đơn giản hơn nhiều:

Lấy đúng bàn phím số với inputmode và pattern (Ảnh minh họa)

Lấy đúng bàn phím số với inputmode và pattern


Một lần nữa, chúng ta có thể làm tốt hơn bằng thuộc tính


HTML autocomplete


 

Theo MDN, "autocomplete cho phép các lập trình viên phát triển web chỉ định nếu bất kỳ sự cho phép mà người dùng phải cung cấp hỗ trợ tự động trong việc điền các giá trị trường biểu mẫu, cũng như hướng dẫn cho trình duyệt về loại thông tin dự kiến ​​trong trường."


Nghe có vẻ hơi mông lung nhỉ.


Nhưng trong trường hợp này, tóm lại là nó sẽ tự động lấy mã code được gửi đến trong tin nhắn để bạn ấn chọn điền vào mà không cần mở tin nhắn.


Để làm điều này, bạn thêm thuộc tính autocomplete với giá trị "one-time-code" như thế này:



<input
  type="text"
  name="token"
  id="token"
  inputmode="numeric"
  pattern="[0-9]*"
  autocomplete="one-time-code"
/>


Với biểu mẫu này,


Khi chúng ta cần người dùng nhập mã code (đã gửi qua tin nhắn cho KH) xác thực 2 yếu tố.


Thì,


Màn hình điện thoại của người dùng sẽ hiển thị tương tự thế này.



Kết quả nỗ lực gia tăng trải nghiệm xác thực 2 yếu tố bằng HTML

Kết quả nỗ lực gia tăng trải nghiệm xác thực 2 yếu tố bằng HTML


Note: Nếu bạn để ý, một số ứng dụng tài chính như Vietcombank, Techcombank, ViettelPay đã thêm tính năng này để bạn không cần phải dời khỏi màn hình ứng dụng. Tăng tốc giao dịch nhanh hơn.




Các giá trị autocomplete hữu ích khác



Có nhiều giá trị autocomplete khác có sẵn, bao gồm mọi thứ từ tên và địa chỉ đến thẻ tín dụng và các chi tiết tài khoản khác.


Để đăng ký và đăng nhập, có một vài giá trị tự động hoàn thành nổi bật dưới dạng gợi ý hữu ích: username, email, new-password, current-password.


Bạn cũng có thể sử dụng nhiều giá trị tự động hoàn thành cùng một lúc.


Nếu username của bạn cũng là một địa chỉ email, bạn có thể cung cấp cho trình duyệt và bất kỳ trình quản lý mật khẩu liên quan nào một gợi ý với autocomplete="username email"


Trình duyệt và trình quản lý mật khẩu có các heuristic rất tốt để tìm các biểu mẫu đăng nhập trên các trang web, nhưng việc sử dụng tên người dùng và giá trị mật khẩu hiện tại làm cho nó rất rõ ràng.


Bạn chắc chắn muốn xem xét sử dụng các thuộc tính này nếu bạn đang xây dựng một hình thức đăng nhập với tên người dùng và mật khẩu trên các trang khác nhau.


Trong biểu mẫu đăng ký, đảm bảo sử dụng giá trị "new-password" vì nó kích hoạt đề xuất mật khẩu trong một số trình duyệt.


Hình 5



Tự động hoàn thành mật khẩu một lần trong các trình duyệt khác



Hành vi tự động hoàn tất này hiện chỉ tồn tại trong Safari trên iOS và macOS, nhưng Chrome team đang tìm các ý tưởng tương tự để hợp lý hóa quy trình này.


Hiện tại có một thử nghiệm với SMS Receiver API bắt buộc được mô hình hóa trên Android's SMS Receiver API.


Điều này sẽ cho phép các lập trình viên trích xuất mật khẩu một lần từ SMS và, vì nó bằng JavaScript, ngay lập tức gửi biểu mẫu, tiết kiệm cho người dùng nhiều thời gian hơn.


Tại thời điểm viết API này là một phần của bản dùng thử gốc cho phép bạn kiểm tra nó và đưa lại cho Chrome team.


Nếu nó làm bạn quan tâm, hãy đăng ký dùng thử tại đây.



Gia tăng trải nghiệm bằng HTML



Trong bài đăng này, chúng ta đã thấy rằng chỉ cần thêm một vài thuộc tính HTML, chúng ta có thể cải thiện trải nghiệm đăng nhập cho người dùng, đặc biệt là trên các thiết bị di động.


Phần tử <input> là một trong những phần tử HTML thú vị nhất mà chúng ta có quyền truy cập. Tùy thuộc vào các thuộc tính, nó có thể cung cấp nhiều loại đầu vào khác nhau.



Phil Nash


---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150 
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php
Bình luận Facebook
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!