10/10/2018, 10:34
[Help] Gom nhiều hệ thống lại thành 1
Số là em có các ứng dụng nhỏ nhỏ viết bằng php, mysql dùng trong nội bộ công ty. Những ứng dụng này hiện tách biệt với nhau. Cơ sở dữ liệu user cũng tách biệt.
Và như vậy là phát sinh vấn đề : 1 nhân viên phải nhớ nhiều tài khoản của mình trên nhiều ứng dụng, và mỗi lần muốn đổi pass chẳng hạn thì phải đổi trên từng ứng dụng.
Nên em muốn gom lại để sử dụng chung một hệ thống user thôi. Có nghĩa là user sẽ truy cập vào trang chủ, đăng nhập, sau đó dựa vào vai trò của user mà hệ thống sẽ cho phép user tiếp tục truy xuất ứng dụng nào.
Mấy bác giúp dùm em xem cách nào gom lại thuận tiện nhất và không làm ảnh hưởng nhiều đến những ứng dụng này ?
Em cám ơn nhiều.
Và như vậy là phát sinh vấn đề : 1 nhân viên phải nhớ nhiều tài khoản của mình trên nhiều ứng dụng, và mỗi lần muốn đổi pass chẳng hạn thì phải đổi trên từng ứng dụng.
Nên em muốn gom lại để sử dụng chung một hệ thống user thôi. Có nghĩa là user sẽ truy cập vào trang chủ, đăng nhập, sau đó dựa vào vai trò của user mà hệ thống sẽ cho phép user tiếp tục truy xuất ứng dụng nào.
Mấy bác giúp dùm em xem cách nào gom lại thuận tiện nhất và không làm ảnh hưởng nhiều đến những ứng dụng này ?
Em cám ơn nhiều.
Bài liên quan
Mọi thao tác đăng ký, đăng nhập, đổi mật khẩu, thoát,... nói chung là liên quan đến tài khoản đều thông qua hệ thống này.
Ví dụ, hệ thống A muốn đăng nhập thì redirect tới hệ thống passport system, sau khi đăng nhập nếu thành công sẽ lưu vào session sẽ redirect về lại A. Và hệ thống A chỉ việc dựa vào session mà xử lý, không liên quan gì đến quản lý tài khoản.
Về database thì, các table user của từng hệ thống (A,B,C,...) remove cột username và password đi (vì không cần thiết) chỉ chừa lại ID để tham chiếu đến các thông tin khác. Đồng thời tạo thêm table user để HT passport sử dụng.
Lưu ý khi add 1 user thì add vào tất cả các table user của các hệ thống.
Lấy ví dụ đơn giản:
Giả sử:
Hệ thống A có tabble A_user gồm: id,username,pass,nickname,haircolor
Hệ thống B có tabble B_user gồm: id,username,pass,phone,fax
Sau khi sửa thì:
A_user gồm: id,nickname,haircolor
B_user gồm: id,phone,fax
passport gồm: id,username,pass
Khi đăng ký user, các thông tin sẽ gồm: username, pass, nickname, haircolor, phone, fax. Vậy thì bạn cần chia các thông tin này ra và chèn vào các table tương ứng.
- Chèn user,pass vào passport table.
- truy vấn để lấy id vừa chèn (nếu id là tự động)
- Sử dụng id vừa lấy kết hợp với nickname, haircolor chèn vào A_user (để HT A có thể sử dụng)
- HT B cũng tương tự
Như vậy những ứng dụng A, B vẫn có thể truy cập thông tin bình thường vì chúng chỉ làm việc trên session, không hề đụng tới cột username và password
Khi gom lại chung DB, nếu có 2 table user của 2 hệ thống trùng tên thì bắt buộc bạn phải thay đổi 1 trong 2 (và khi đó thì phải thay đổi câu query trong code của HT tương ứng). Còn nếu chúng không trùng tên nhau thì cứ giữ nguyên cũng chẳng hề gì (để khỏi phải thay đổi trong code).
Nói chung là table nào trùng tên thì phải đổi. Không trùng tên thì đổi hay không cũng được (đổi thì dễ quản lý nhưng mất công đổi trong code)