Tech24.vn
Tips: Tìm bài viết blog công nghệ
+ Trả Lời Ðề Tài + Gởi Ðề Tài Mới
kết quả từ 1 tới 9 trên 9

Ðề tài: Xây dụng trang đăng nhập quản trị , phân quyền trong asp

Game Tech24
  1. #1
    ..:: T24 Software Group ::.. Avatar của huulam1605
    Tham gia
    T5, 25-Th06-2009
    Đến từ
    Đâu hỏi làm gì ?
    Tuổi
    24
    Bài gởi
    172
    Cảm ơn
    90
    Được cảm ơn 728 lần trong 99 bài

    Xây dụng trang đăng nhập quản trị , phân quyền trong asp

    1. Trang quản trị được làm như thế nào ?
    Trước tiên, hãy tưởng tượng bạn làm 1 website, với 2 phần riêng biệt :
    + Phần web gồm các trang ASP cho phép tất cả mọi người có thể truy cập vào.
    + Phần Admin , gồm các trang ASP mà chỉ có Admin mới có thể truy cập vào. Phần Admin này sẽ chứa các file thao tác với CSDL của bạn, như : như "them_san_pham.asp" , "xoa_san_pham.asp", "sua_san_pham.asp" ...

    Phần Admin này chỉ cần là một thư mục có tên "Admin/" trong thư mục gốc của bạn - giống như một thư mục bình thường. Một khi truy cập được vào các trang trong thư mục này cũng có nghĩa bạn đã nắm quyền kiểm soát trang web.

    Vấn đề là : làm sao mỗi trang web như : "them_san_pham.asp" hay "xoa_san_pham.asp" có thể phân biệt đâu là người dùng và đâu là Admin ? Không thể mỗi lần truy cập một trang web - bạn lại phải bắt người dùng gõ username và password để xác nhận đúng là Admin được.

    Cách giải quyết là: chỉ đăng nhập 1 lần ở 1 trang có tên là Login.asp. Nếu người dùng gõ đúng username và password thì bạn thiết lập 1 biến session có tên "login" với giá trị "true".

    PHP Code:
         session("login") = True 
    Khi người dùng đó truy cập trang "them_san_pham.asp" hay "sua_san_pham.asp" thì tại mỗi trang đó bạn chỉ việc kiểm tra biến session có tên "login" xem nó có giá trị "true" hay không là được.

    Nếu đúng là : session("login") = true , bạn cho phép người dùng làm bất cứ điều gì. Nếu sai, bạn chuyển họ trang trang "Login.asp". Và như vậy, dù một người dùng có biết được tên 1 file trong kênh quản trị của bạn, và cố gắng truy cập vào - thì họ cũng sẽ bị trang "Login.asp" chặn lại.

    Đó chính là cơ cấu hoạt động của một kênh quản trị. Sau đây, tôi sẽ hướng dẫn bạn làm một trang đăng nhập vào kênh quản trị.

    2. Làm trang đăng nhập Login.asp.
    Thường thì bạn lưu username và password của Admin trong một bảng trong CSDL. Ở đây - trang đăng nhập của bạn sẽ phải kết nối tới CSDL để lấy username và password đó ra. Sau đó, bạn phải làm một form cho người dùng điền username và password.
    Phần quan trọng nhất sẽ là so sánh username và password nhập vào với cái bạn lấy ra từ CSDL. Nếu đúng thì tạo biến session("login") với giá trị "true".

    Để làm trang Login được tốt, bạn nên tạo một thư mục có tên "Admin" trên thư mục gốc của bạn. Trong thư mục Admin, bạn hãy tạo một vài file ASP có nội dung bất kì làm ví dụ. Tôi sẽ giả sử là bạn có 2 file: "them_san_pham.asp" và "xoa_san_pham.asp".
    Dưới đây là bảng Admin trong CSDL của bạn :

    Còn đây là code trang Login.asp nằm trong thư mục Admin.
    PHP Code:
    1.                 <form method=post  action="login.asp">
    2.                                     Ten dang nhap : <input name ="user">  <br>
    3.                                     Mat khau : <input name "pass"> <br>
    4.                                     <input type "Submit" value ="OK">
    5.                 </form>
    6.    <%       user Request ("user")
    7.                 pass Request ("pass")
    8.                 Set Conn = ....
    9.                 Set RS = ....
    10.               SQL "Select  * from  Admin"
    11.               RS.Open SQL,Conn
    12.               
    While not RS.EOF
    13.                                   
    if  RS("user") =user  and RS("pass") = pass then
    14.                                                       session
    ("login") = true
    15.                                   end 
    if
    16.                                   RS.MoveNext
    17.               Wend  
    %>
    18.               <%=session("login")%> 
    Khi bạn chạy trang Login.asp này, bạn sẽ thấy một form với 2 trường: "Ten dang nhap" và "Mat khau". Bạn hãy điền kí tự bất kì vào đó và nhấp nút "OK". Trang được chuyển nhưng không có gì xảy ra hết.
    Bạn hãy điền "Ten dang nhap" là "admin" và "Mat khau" là "123456", bạn sẽ thấy có 1 chữ "True" hiện ra phía dưới form này.
    Vậy có nghĩa là bạn đã đăng nhập thành công.

    Bây giờ bạn sửa lại code trang login.asp một chút, dòng số 18 thành:
    PHP Code:
    18.               <% if  session("login"then
    19.                                   Response
    .Redirect  ("them_san_pham.asp")
    20.               end if %> 
    Bạn hãy chạy lại trang Login.asp - nếu bạn đăng nhập sai thì không sao - nhưng nếu gõ đúng user và pass, bạn sẽ được chuyển đến trang "them_san_pham.asp". Đó cũng là một tác dụng mà trang Login.asp nên có.

    3. Kiểm tra đăng nhập và làm trang đăng xuất ( Logout.asp ).
    Bây giờ, bạn hãy làm một trang có tên Logout.asp. Nhiệm vụ của trang này chỉ đơn giản là xóa bỏ giá trị của session có tên "login" - như vậy có nghĩa là bạn đã thoát. File Logout.asp cũng nằm trong thư mục "Admin", gồm 2 dòng :
    PHP Code:
    1.                 <% sesion("login") = ""
    2.                       Response.Redirect "../index.asp"
    3.                  %> 
    Bạn thấy , trang Logout này - ngoài việc xóa biến session("login") - còn có một tác vụ nữa là chuyển người dùng sang trang chủ của web bạn - đó cũng là một thao tác mà trang này cần có.
    Sau làm xong trang Logout.asp , bạn hãy chạy thử nó. Làm như vậy bạn đã đăng xuất (Thoát) ra khỏi quyền Admin.

    Dưới đây là code kiểm tra đăng nhập. Bạn hãy chép nó vào một file có tên kiem_tra.asp nằm trong thư mục "Admin" :
    PHP Code:
    1.                 <% if   not  session("login")  then
    2.                                     Response
    .Redirect  "Login.asp"
    3.                 End if %> 
    Bạn thấy không, những dòng code này không hề khó chút nào. nó kiểm tra biến session("login") - nếu không phải là "true" thì nó sẽ chuyển người dùng sang trang "Login.asp".

    Đến phần cuối cùng. Bạn hãy đính kèm file kiem_tra.asp vào đầu của tất cả các file bạn muốn bảo mật. Trong trường hợp này, bạn hãy chèn dòng sau vào đầu các file "them_san_pham.asp" , "xoa_san_pham.asp" ..vv... bằng cách sử dụng cú pháp:
    PHP Code:
      <!--#include file="kiem_tra.asp"--> 
    Đến đây bạn hãy thử truy cập vào trang "them_san_pham.asp" trong tình trạng đã đăng xuất bằng cách chạy trang "logout.asp".
    Bạn sẽ thấy trang "login.asp" chặn bạn lại đòi password. Bạn hãy điền đúng password và username, bạn sẽ thấy mình được chuyển sang trang "them_san_pham.asp".

    Bạn thấy đấy, làm một trang quản trị đâu hề khó.

    4. Vấn đề cấp quyền trên web của bạn:
    Hãy tưởng tượng là trang web của bạn không chỉ có 1 Admin - bạn muốn nhiều người cùng có quyền quản lý như bạn - hoặc là mỗi loại Admin có một quyền khác nhau.Bạn phải làm thế nào ?

    Trước tiên là bạn phải mở rộng CSDL của bạn ra, bằng cách thêm vào đó 1 trường chứa các CHUC_DANH (chức danh) cho các thành viên.
    Ví dụ : Admin , mod , member , ..... Khi kiểm tra CSDL trong trang Login.asp, bạn cũng kiểm tra luôn chức danh của tên đăng nhập (nếu đúng) là gì. Sau đó bạn ghi chức danh này ra 1 biến session.
    Ví dụ:
    PHP Code:
       if   user RS("user")   and  pass  RS("spass")  then
             Session
    ("login") = True
             Session 
    ("chuc_danh") =  RS("chuc_danh")
         
    end if 
    Với mỗi loại chức danh, bạn xây dựng khu vực riêng cho họ - với các trang them_sp.asp hay xoa_sp.asp có 1 giới hạn quyền lực nào đó. Và đoạn code kiểm tra đăng nhập của mỗi nhóm người dùng này cũng cần kiểm tra luôn chức danh. Điều này đảm bảo một người là mod thì không thể nhảy vào kênh dành cho Admin được.
    Ví dụ, với trang kiem_tra.asp của Admin thì :
    PHP Code:
       if  not session("login") ) or  not  (session("chuc_danh") = "Admin"then
                Response
    .Redirect "login.asp"
           
    End if 
    ( nguồn hỗ trợ lập trình )
    iho:

    Các chủ đề khác:
    (Recruitment) Senior .NET Technical Lead,...
    [Recruitment] Web Developer .NET (10...
    Nhậnlàm website, Đồ án tốt nghiệp, bài tập...
    Học ASP
    iMicroSoft khai giảng khoá học C#.NET
    Code giỏ hàng
    Học lập trình : Thật là đơn giản !
    16/5- Khai giảng lớp học Đồ họa thiết kế...
    Đón Merry Christmas – ƯU ĐÃI 10 NGÀY VÀNG...
    XÂY DỰNG WEBSITE HOÀN HẢO CHO DOANH NGHIỆP...

    Thay đổi nội dung bởi: huulam1605, Chủ nhật, 09 Tháng tám 2009 11:16 am lúc  
    Hãy click Thanks - Động lực cho sự đóng góp và phát triển !

  2. 12 người cảm ơn huulam1605 vì bài viết hay:

    bullet999 (Thứ bảy, 18 Tháng hai 2012 01:57 am), coolnt0317 (Thứ tư, 07 Tháng mười 2009 08:48 am), lulu333333 (Thứ hai, 05 Tháng tư 2010 09:11 pm), macozero (Thứ tư, 27 Tháng một 2010 07:54 am), Mr.Melancholy (Thứ sáu, 08 Tháng một 2010 11:16 pm), ndp1007 (Thứ bảy, 12 Tháng mười hai 2009 01:56 pm), phuongthao_7789 (Thứ hai, 05 Tháng tư 2010 08:20 am), Slazenger11 (Thứ hai, 01 Tháng hai 2010 09:09 pm), tugll77 (Thứ sáu, 05 Tháng mười một 2010 10:06 am), vipvipokk (Chủ nhật, 09 Tháng tám 2009 11:38 am), VMTyel (Thứ tư, 28 Tháng tư 2010 10:40 am), xinu2727 (Thứ ba, 13 Tháng tư 2010 10:35 am)

  3. #2
    CASIO-FX
    Tham gia
    T2, 14-Th07-2008
    Tuổi
    27
    Bài gởi
    1
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài

    Mặc định

    Cho mình hỏi 1 chút . biến session có thời gian time out . Khi bạn đăng nhập thành công, rồi bạn tắt trang web đi,bật lại trình duyệt và vào luôn trang admin.asp khi thời gian time out vẫn còn thì không cần đăng nhập cũng được vì session lúc đó vẫn có giá trị true. Đấy là hạn chế khi đăng nhập, mình cũng đang điên đầu vì vấn đề này ....

  4. #3
    CASIO-FX Avatar của FantasyVn
    Tham gia
    T5, 13-Th11-2008
    Tuổi
    24
    Bài gởi
    1
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài

    Mặc định

    Phần cấp phân quền nên dùng authentication trong config hoặc là xài database có sẵn của ASP.NET do IIS hỗ trợ được mã hóa (membership).
    Chứ xài session thì thủ công quá
    Thay đổi nội dung bởi: FantasyVn, Thứ hai, 01 Tháng hai 2010 09:02 pm lúc  

  5. #4
    Pentium II
    Avatar của buiducbang
    Tham gia
    T5, 19-Th03-2009
    Đến từ
    Hoang mai Ha Noi
    Tuổi
    24
    Bài gởi
    248
    Cảm ơn
    579
    Được cảm ơn 31 lần trong 24 bài

    Mặc định

    Trích Nguyên văn bởi FantasyVn View Post
    Phần cấp phân quền nên dùng authentication trong config hoặc là xài database có sẵn của ASP.NET do IIS hỗ trợ được mã hóa (membership).
    Chứ xài session thì thủ công quá
    cái này là ASP chứ không phải ASP.NET bạn à

  6. #5
    CASIO-FX
    Tham gia
    T5, 17-Th09-2009
    Tuổi
    24
    Bài gởi
    3
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài

    Mặc định

    Trích Nguyên văn bởi quangtuanzz View Post
    Cho mình hỏi 1 chút . biến session có thời gian time out . Khi bạn đăng nhập thành công, rồi bạn tắt trang web đi,bật lại trình duyệt và vào luôn trang admin.asp khi thời gian time out vẫn còn thì không cần đăng nhập cũng được vì session lúc đó vẫn có giá trị true. Đấy là hạn chế khi đăng nhập, mình cũng đang điên đầu vì vấn đề này ....
    làm gì có chuyện session tắt đi bật lại thì vẫn còn
    mà thậm chí có cái này thì khi phân quyền như trên thì một user bình thường ko thể vào trang admin

    Trích Nguyên văn bởi FantasyVn View Post
    Phần cấp phân quền nên dùng authentication trong config hoặc là xài database có sẵn của ASP.NET do IIS hỗ trợ được mã hóa (membership).
    Chứ xài session thì thủ công quá
    híc, membership, asp.net cũng dùng session, nếu bạn ko tin thì khi chạy bạn có thể in session ra mà xem
    còn dùng cái này quả nhiên nó làm cho mình hết từ phân quyền, mã hóa password...
    nhưng db mình ko chủ động được :mURI_temp_213be35d:

  7. #6
    CASIO-FX
    Tham gia
    T3, 06-Th04-2010
    Tuổi
    24
    Bài gởi
    1
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài

    Mặc định

    bạn ơi không dược bạn ạ
    :mURI_temp_6f830bbb:

  8. #7
    CASIO-FX
    Tham gia
    T4, 20-Th05-2009
    Tuổi
    25
    Bài gởi
    1
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài

    Mặc định

    session phân quyền cũng đựoc lắm, mình làm trên mô hình 3 lớp, khi nhấn nút login thì mình cho session["IsLogin"]=<user lấy từ data lên>, nhấn nut logout thì cho nó ="", or "khách",
    khi bạn tắt trang web đi thì cái session đó nó tự tra về giá trị mà bạn đã gán ban dầu ở file Global.asax
    authentication bạn phải rành về membership and roles mới phân quyền nó, mình mò hoài mà hong trúng nên mới chuyển sang session luôn :mURI_temp_94b6d393:

  9. #8
    CASIO-FX
    Tham gia
    CN, 02-Th05-2010
    Tuổi
    35
    Bài gởi
    1
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài

    Mặc định

    :05235352-2-21A32::05235352-2-11Ab:

  10. #9
    CASIO-FX
    Tham gia
    T6, 23-Th10-2009
    Tuổi
    25
    Bài gởi
    1
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài

    Mặc định

    :05235352-2-Ec8:

+ Trả Lời Ðề Tài + Gởi Ðề Tài Mới

Thông tin chủ đề

Users Browsing this Thread

Đang có 1 người xem chủ đề này. (0 thành viên và 1 khách)

     

Chủ đề tương tự

  1. Giúp mình đăng ký trang này với
    Người gửi: Hacker_Rach ở chuyên mục Chia Sẻ Kiến Thức
    Trả lời: 5
    Bài mới: Thứ bảy, 31 Tháng một 2009 10:35 pm,  

Từ khóa

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

  • Bạn không thể tạo chủ đề
  • Bạn không thể viết trả lời
  • Bạn không thể dùng đính kèm
  • Bạn không thể sửa bài viết của bạn
Home | Game | Software | Hardware | Security | eBook | Forum
Giới thiệu | Nguyên tắc chung | Quy tắc sử dụng | Gửi ý kiến | Job center | Info blog | Liên hệ quảng cáo
Đơn vị chủ quản: Công Ty TNHH Tập Đoàn Các Ngôi Sao Doanh Nghiệp
Giấy phép xuất bản trang tin số 151/GP-CBC của Bộ Thông Tin và Truyền Thông - Cục Báo Chí
Túi xách hàng hiệu | chep phim hd | copy phim hd | dau phat hd | dau phat 3d | máy giặt nhật | tủ lạnh nhật | điều hòa nội địa nhật | nồi cơm nhật | buy soundcloud plays | buy youtube likes | buy youtube subscribers | Giấy phép kinh doanh | tư vấn pháp lý | văn bản pháp luật | biểu mẫu hành chính | giấy phép lao động | tư vấn lập di trúc | tư vấn luật doanh nghiệp | tư vấn luật lao động | luật lao động | tư vấn luật doanh nghiệp | Gậy golf | buy soundcloud followers | tư vấn pháp luật
This site doesn't host any files. All posts and articles on this site are created by its visitors and express their own opinion. More detail...