Bạn ghé thăm diễn đàn lần đầu? hãy đăng ký ngay bây giờ để tham gia.
  • Đăng nhập:

Chào mừng bạn đến với ITVNN FORUM - Diễn đàn công nghệ thông tin.

Nếu đây là lần đầu tiên bạn tham gia diễn đàn, xin mời bạn xem phần Hỏi/Ðáp để biết cách dùng diễn đàn. Để có thể tham gia thảo luận bạn phải đăng ký làm thành viên, click vào đây để đăng ký.


  • Partner Area
    • ITVNN HOSTING - Thiết kế website, Cung cấp Domain, Hosting, VPS Việt Nam Anh Hùng - Thông tin truyền thông
kết quả từ 1 tới 1 trên 1
Tăng kích thước phông chữ Giảm kích thước phông chữ
  1. #1
    TheShinichi's Avatar
    Banned

    Trạng thái
    Offline
    Tham gia ngày
    Oct 2009
    Thành viên thứ
    2018
    Giới tính
    Bài gởi
    2
    Level: 17 [?]
    Experience: 10,614
    Next Level: 13,278
    Cảm ơn 0
    Cảm ơn 0 lần / 0 Bài viết

    Icon1 Chứng thực tài khoản Joomla trên ứng dụng ASP.NET  

    Chứng thực tài khoản Joomla trên ứng dụng ASP.NET

    Xin chào các bạn,

    Ắt hẳn mới đọc qua tiêu đề, một số bạn đã từng nghiên cứu qua JoomlaASP.NET sẽ ồ lên ngạc nhiên chăng ? Bởi vì Joomla được phát triển trên ngôn ngữ PHP, còn ASP.NET là một ngôn ngữ có rất nhiều khác biệt so với PHP. Mặt khác, môi trường vận hành chúng lại là hai đối thủ truyền kiếp, PHP chủ yếu chạy trên hệ điều hành Linux còn ASP.NET lại chạy trên hệ điều hành Windows. Tuy nhiên, chủ đề tôi nêu lên trong bài viết này, ngược lại có lẽ không xa lạ với một số ít bạn đã trải qua trong thực tế. Một vài người bạn của tôi, trước kia có hỏi tôi một câu hỏi tương tự như tiêu đề bài viết trên kia: "Làm sao chứng thực tài khoản Joomla trên ASP.NET ?". Ở thời điểm đó, tôi không có nhu cầu "kỳ quặc" như vậy nên cũng không chú tâm tìm hiểu về nó.

    Cho đến cách đây gần 2 tháng, tôi nhận phát triển một website như sau: Website này dùng Joomla và đã chạy được vài tháng - điều này có nghĩa cơ sở dữ liệu đã có bài viết, chủ đề, chuyên mục, thành viên, bình chọn, phản hồi,.... Chủ xị, à nhầm , chủ nhân của website muốn thay đổi "bộ mặt" của trang web này (tức là phần Front-End) nhưng vẫn giữ lại phần quản trị (Back-End) của Joomla vì đã quen thao tác với nó, tất nhiên cơ sở dữ liệu cũng phải được giữ lại luôn. Nhưng "ác" một nỗi, cái phần Front-End đấy được yêu cầu phải viết bằng ASP.NET.

    Lúc ấy, tôi thấy đây là một project dễ (hơi chủ quan ) vì chỉ mỗi việc không phải viết phần Back-End đã giúp rút ngắn thời gian phát triển xuống nhiều lần rồi. Quả vậy, tôi chỉ mất áng chừng 1 tháng để viết hoàn tất theo yêu cầu. Nhưng bất ngờ vào thời điểm gần cuối, tôi nhận ra vấn đề là : làm sao người dùng, quản trị viên, có thể đăng nhập vào website ? Tất nhiên đối với quản trị viên, họ có thể không cần đăng nhập ở trang chủ mà chỉ cần đăng nhập ở trang back-end của Joomla. Còn người dùng ? Họ muốn đăng nhập để viết phản hồi, bình chọn, thì sao ? Tôi tưởng chừng như đã chết vào phút 89...

    Ngoài lề : Cấu trúc mật khẩu của Joomla

    Hãy xem mật khẩu của tài khoản Joomla được lưu trong CSDL:

    f4f6b82bb566d38abc17acba97a3aa3b:KoRzoQ0vbYbsnvR9BZiEtD1yoYlBWQbz

    Như chúng ta thấy, mật khẩu Joomla rõ ràng là một chuỗi hash, nhưng tại sao lại dài quá vậy ? Hãy để ý kỹ một chút, chúng ta sẽ thấy có một dấu hai chấm ở giữa chuỗi này. Sau khi phân tách ra, chúng ta có:


    f4f6b82bb566d38abc17acba97a3aa3b

    KoRzoQ0vbYbsnvR9BZiEtD1yoYlBWQbz


    Vậy thông tin trong chuỗi này là gì ? Đừng quên Joomla là một ứng dụng web open source, vậy hãy đơn giản là mở source nó ra xem. Theo tôi biết, Joomla có một lớp Joomla.User.Helper (/joomla/libraries/joomla/user/helper.php). Tôi xin phép không trích dẫn ra đây, vì nếu bạn đang nghiên cứu về Joomla thì ắt hẳn trong tay bạn phải có sẵn bộ source của nó rồi. Từ đó, chúng ta phác hoạ được quá trình tạo password của Joomla như sau:





    Trong tuần cuối cùng của hạn giao project, tôi dành gần hết thời gian của mình trên Google. Tôi thử mọi từ khoá mà mình có thể nghĩ ra. Tôi lang thang khắp các diễn đàn về tin học trong và ngoài nước. Hầu hết không có thông tin nào giá trị khả dĩ giúp tôi giải quyết được vấn đề. Thậm chí, tôi đã từng nghĩ đến cách là sử dụng phần Back-end của Joomla để authenticate rồi trả kết quả về cho trang ASP.NET của tôi xử lý:



    Nhưng cách này không thực sự làm tôi vừa ý ! Sự "trộn lẫn" giữa hai ngôn ngữ không cùng một nền tảng, môi trường vận hành không phải là một ý hay. Nó sẽ dẫn tới nhiều hệ luỵ, phiền toái về sau. Thật may mắn, cuối cùng tôi đã nhận được nhiều sự trợ giúp, và một trong số đó đã góp phần tạo nên bài viết này. Hãy xem đoạn code dưới đây:




    Bạn cảm thấy thế nào ? Nó đơn giản đến không ngờ phải không ? Đến đây, bạn chỉ cần viết thêm một số hàm xử lý thao tác đăng nhập, đăng xuất, đổi mật khẩu, reset mật khẩu, tạo mới user,... là công việc đã hoàn tất.

    Đó là cách của tôi, còn bạn có giải pháp nào khác muốn chia sẻ cùng mọi người không ?


    P/s: Nếu bạn đăng lại bài viết này trên website hoặc blog của bạn, đừng quên ghi rõ nguồn gốc (http://shinichi.microsync.net/blog/p...ng-ASP-NET.php) nhé ! Xin cảm ơn !


 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Trả lời: 1
    Bài mới gởi: 10-10-2012, 11:25 AM
  2. Trả lời: 4
    Bài mới gởi: 28-04-2011, 07:56 PM
  3. Trả lời: 0
    Bài mới gởi: 01-06-2010, 12:13 AM
  4. Trả lời: 0
    Bài mới gởi: 26-02-2010, 02:25 PM
  5. Trả lời: 0
    Bài mới gởi: 26-02-2010, 02:24 PM

Tags for this Thread

Bookmarks

Quuyền Hạn Của Bạn

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể chỉnh sửa bài viết
  •