《電子商務網站建設與管理》課件-項目四_第1頁
《電子商務網站建設與管理》課件-項目四_第2頁
《電子商務網站建設與管理》課件-項目四_第3頁
《電子商務網站建設與管理》課件-項目四_第4頁
《電子商務網站建設與管理》課件-項目四_第5頁
已閱讀5頁,還剩39頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【項目導讀】完善的電子商務網站就像一個ERP系統一樣,除了可以在網站里實現訂單管理、物流管理、財務管理等諸多功能,還要求有比較完備的后臺管理系統。電子商務網站后臺的功能主要有用戶管理、商品管理、新聞管理等,其中用戶管理與商品管理在后臺管理中尤為顯得重要。通過對用戶管理系統和商品管理系統的設計與實現,要求學生掌握電子商務系統中用戶信息的管理和權限的分配,掌握商品的分類和添加刪除等的管理。項目四共有兩個任務:任務一:用戶管理系統的設計與實現任務二:商品管理系統的設計與實現【關鍵詞】后臺管理、用戶管理、權限分配、訪問控制、商品管理任務一用戶管理系統設計與實現任務目標1.掌握用戶的登錄、以及登錄時產生的票據來保存用戶的狀態2.掌握票據中角色的處理,并根據角色控制訪問權限3.掌握用戶權限的分配以及訪問權限的控制任務描述電子商務后臺管理中用戶的登錄、用戶的注冊;用戶的權限的分配,訪問權限的控制等。[任務知識]一、用戶的登錄用戶登錄解決的問題是通過用戶名和密碼獲得合法的后臺管理的權限,登錄后,根據用戶的角色權限使用相對應的頁面二、用戶的注冊填寫用戶相關信息進行注冊,在用戶表中添加用戶相關信息,然后由系統管理員分配相應的權限,是的注冊的用戶可以使用相應的子系統或頁面。三、訪問權限的控制子系統只允許具備權限的用戶或角色進行訪問,而拒絕不具備權限的用戶訪問。四、用戶權限的分配系統管理員分配新注冊的用戶相對應的權限,可以允許新注冊的用戶訪問相應的子系統或頁面。任務實施用戶管理基于表UserInfo和表AdminRole,表UserInfo任務實施用戶管理基于表UserInfo和表AdminRole,表AdminRole任務實施步驟一、建立用戶登錄頁面任務實施步驟一、建立用戶登錄頁面登錄成功后,獲取用戶角色核心代碼:stringRoleName=GetRoleName(tbUser.Rows[0]["RoleID"].ToString());FormsAuthenticationTicketmyTicket= newFormsAuthenticationTicket(1, tbUser.Rows[0]["UserID"].ToString(), DateTime.Now, DateTime.Now.AddMinutes(20), true, RoleName, FormsAuthentication.FormsCookieName);stringhashTicket=FormsAuthentication.Encrypt(myTicket);//用于創建加密的ticket對象HttpCookieuserCookie=newHttpCookie(FormsAuthentication.FormsCookieName,hashTicket);Response.Cookies.Add(userCookie);Response.Redirect("Manager/UserList.aspx");任務實施步驟一、建立用戶登錄頁面使用Forms驗證存儲用戶自定義信息Forms驗證在內部的機制為把用戶數據加密后保存在一個基于cookie的票據FormsAuthenticationTicket中,因為是經過特殊加密的,所以應該來說是比較安全的。而.net除了用這個票據存放自己的信息外,還留了一個地給用戶自由支配,這就是現在要說的UserData。UserData可以用來存儲string類型的信息,并且也享受Forms驗證提供的加密保護,當我們需要這些信息時,也可以通過簡單的get方法得到,兼顧了安全性和易用性,用來保存一些必須的敏感信息還是很有用的

下面是FormsAuthenticationTicket構造函數的重載之一的方法簽名

publicFormsAuthenticationTicket(

intversion,

stringname,

DateTimeissueDate,

DateTimeexpiration,

boolisPersistent,

stringuserData

);

參數

:version

,版本號。

Name,與身份驗證票關聯的用戶名。

issueDate,Cookie的發出時間。

Expiration,Cookie的到期日期。

isPersistent,如果Cookie是持久的,為true;否則為false。

userData

,將存儲在Cookie中的用戶定義數據

使用userdata也很簡單,FormsIdentity的Ticket屬性就提供了對當前票據的訪問,獲得票據后就可以用UserData屬性訪問保存的信息,當然是經過解密的。如果需要存儲角色,userData使用roles,角色字符串,角色之間可以用分隔符隔開,如“,”,例如“sales,manager”。

本例中,用戶角色是單一角色,如果是多重角色,則獲取角色的方法需要重寫。任務實施步驟二、建立用戶注冊頁面用戶注冊頁面的設計與其他表單頁面一致,在此不再贅述。需要注意的是,注冊頁面也需要放置在主目錄下,與Login頁面在同一目錄。步驟三、控制登錄后的用戶訪問將允許某角色訪問的文件放置在某文件夾內,控制文件夾的訪問權限,即可以控制用戶的訪問權限。任務實施步驟三、控制登錄后的用戶訪問將允許某角色訪問的文件放置在某文件夾內,控制文件夾的訪問權限,即可以控制用戶的訪問權限。首先,需要在文件夾內添加一個配置文件web.config<?xmlversion="1.0"?><configuration><system.web><authorization><allowroles="manager,sales"/><denyusers="*"/></authorization></system.web></configuration>此配置文件中,allow表示允許某種角色的用戶訪問,deny表示拒絕某種角色的用戶訪問,“*”表示所有用戶,“?”表示匿名用戶,此文件表示拒絕除了角色為manager和Salesman的所有用戶。任務實施步驟三、控制登錄后的用戶訪問將允許某角色訪問的文件放置在某文件夾內,控制文件夾的訪問權限,即可以控制用戶的訪問權限。其次,要在根目錄下的Web.config文件中的System.Web節中配置<roleManager>節。<roleManagerdefaultProvider="MyProvider"enabled="true"><providers><addname="MyProvider"type="WebAppDataBind.MyRoleProvider"/></providers></roleManager>其中type的值為處理角色文件的類名,包括命名空間。任務實施步驟三、控制登錄后的用戶訪問將允許某角色訪問的文件放置在某文件夾內,控制文件夾的訪問權限,即可以控制用戶的訪問權限。最后,要創建處理角色的類,類要繼承(實現)抽象類RoleProvider,實現類中方法GetRolesForUser,此方法是從票據中獲取用戶信息,并分解成角色數組。publicoverridestring[]GetRolesForUser(stringusername){FormsIdentityId=HttpContext.Current.User.IdentityasFormsIdentity;if(Id!=null){returnId.Ticket.UserData.Split(',');}returnnull;}任務實施步驟四、系統管理員分配用戶角色權限由以上訪問控制機制處理后,用戶登錄后,角色符合條件就可以訪問UserList頁面。此頁面是用戶列表(簡化版)此頁面使用的GridView控件呈現用戶列表,前臺文件為UserList.aspx,代碼略任務實施步驟四、系統管理員分配用戶角色權限<ItemTemplate><asp:LabelID="Label3"runat="server"Text='<%#GetRoleName(Eval("RoleID").ToString())%>'></asp:Label></ItemTemplate>其中,UserInfo表中只有RoleID,沒有RoleName,而希望頁面呈現出來的是RoleName,則需要進行處理,根據RoleID,從AdminRole表中獲取RoleName,代碼如下:publicstringGetRoleName(stringRoleID){//根據配置文件中的節,獲取連接字符串

stringstrCon=ConfigurationManager.ConnectionStrings["eshopConnection"].ToString();SqlConnectioncn=newSqlConnection(strCon);stringstrSelect="select*fromAdminRolewhereRoleID=@rid";SqlCommandcmd=newSqlCommand(strSelect,cn);cmd.Parameters.AddWithValue("@rid",RoleID);cn.Open();SqlDataReaderdr=cmd.ExecuteReader();if(dr.Read()){returndr["RoleName"].ToString();}else{return"";}}注意的是,此方法的修飾符必須為public,否則在頁面無法調用而出錯。任務檢查與評價

1、任務成果:完成用戶管理的所有功能,包括用戶密碼的修改與找回、用戶的注冊等功能。2、任務展示:根據用戶管理的流程,將用戶管理的所有功能展示出來;還要求將用戶分成若干不同類型用戶,如:一般用戶、會員、后臺管理員、平臺管理員等。3、任務評價:能完成用戶管理的整個流程,并能夠有效地控制權限管理,能有效地防范簡單的攻擊,如,直接輸入URL,能夠控制沒有權限的用戶無法訪問。鞏固與拓展

[拓展任務]1、對用戶的密碼進行加密,使用不可逆的加密,有效保護用戶的口令。不可逆的加密算法常用的是MD5加密。2、能夠根據用戶的角色,自動轉到相對應的訪問頁面。3、根據用戶回答的密碼提示問題,幫助用戶找回密碼。4、實現更加精細化的權限控制,如,某個用戶能訪問某個文件夾下的某些頁面,而另外一些頁面則拒絕訪問。5、對GridView控件進行分頁操作等。【項目小結】

通過本項目的學習,掌握了用戶驗證碼的使用,掌握用戶管理系統的功能模塊的相關知識,掌握了頁面之間傳遞參數的一種機制,掌握了使用Forms驗證機制實現了權限訪問控制的處理。【知識技能訓練】1、簡述使用票據機制來實現權限訪問控制的方法和步驟。任務二商品管理系統設計與實現任務目標:1.掌握Repeater控件的使用2.掌握商品類別的添加與修改3.掌握商品信息的添加與修改,著重掌握圖片的上傳與管理任務描述商品管理系統主要是針對商品的基本信息、倉儲信息等進行管理。包括商品的分類、商品的庫存查詢、商品的銷售查詢、商品信息的添加修改等。其中商品的庫存查詢、銷售查詢在電子商務后臺管理中尤為顯得重要,可以幫助用戶了解商品的銷售情況,是否需要進貨,以及進貨的頻率或數量的問題。商品基本信息的管理決定著商品陳列的效果,特別是圖片的處理,因此本任務中的一個重點就是關于商品陳列照片的上傳與管理。[任務知識]

一、使用Repeater控件對商品分類列表進行管理和控制Repeater這個單詞是重復器的意思,這個名字很形象地體現了Repeater控件的數據呈現方式:不斷重復數據。Repeater比DataList更為開放和靈活,我們僅僅需要配置一行數據的呈現方式,Repeater會自動“重復”生成其余行。二、商品信息的添加與修改。三、使用文件上傳控件對圖片進行上傳和管理。文件上傳控件在實際的應用中出現的頻率非常高。我們知道,對于WEB應用程序,服務端和客戶端交互文件的方法只能上傳和下載。出于安全,對于上傳,程序不可能給出一個類似WINDOWS應用程序的文件選取框讓用戶選擇多個文件上傳,唯一的辦法就是讓用戶自己從電腦上選擇合適的文件;四、使用Repeater展示商品信息。任務實施商品信息表ProductInfo和商品分類表Category任務實施步驟一、使用Repeater對商品類別進行管理1、創建商品類別管理的頁面,效果圖如下:我們首先來建立頁眉和腳注模板。這些模板中的內容不參與“循環”,我們可以把表的表頭部分和結束部分放在里面。代碼略任務實施步驟一、使用Repeater對商品類別進行管理我們首先引入了一個<table>的表頭并設置了一些樣式。在表格的第一行中,我們放了一個用來填寫新增分類的名字的文本框,一個用來實現新增分類操作的按鈕。Repeater中的所有按鈕被點擊后都會觸發ItemCommand事件,因此我們需要為每個按鈕設置一個CommandName以區分。在腳注模板中我們結束了<table>標簽。現在轉換到設計視圖,點擊Repeater然后選擇屬性窗口中的“閃電”圖標切換到Repeater的事件。在ItemCommand事件后雙擊,IDE自動為我們創建了Repeater的ItemCommand事件處理方法,我們直接向其中填寫代碼完成新建分類操作(不要忘記usingSystem.Data.SqlClient):任務實施步驟一、使用Repeater對商品類別進行管理if(e.CommandName=="AddCategory"){RepeaterItemri=e.Item;TextBoxtb=ri.FindControl("tb_NewCategoryName")asTextBox;stringstrCon=ConfigurationManager.ConnectionStrings["eshopConnection"].ToString();SqlConnectioncn=newSqlConnection(strCon);cn.Open();SqlCommandcmd=newSqlCommand("insertintoCategory(CategoryName)values(@CategoryName)",cn);cmd.Parameters.AddWithValue("@CategoryName",tb.Text);cmd.ExecuteNonQuery();SetBind();}任務實施步驟一、使用Repeater對商品類別進行管理我們從e.Item中得到一個RepeaterItem,然后就能使用它查找事件觸發所在行的控件了。從文本框中讀取的數據即是用戶想添加的新分類名,直接使用SQL語句進行插入操作。在插入操作后,我們需要重新綁定Repeater呈現結果。接下來建立SetBind()方法。由于我們在頁面首次加載的時候也需要Repeater顯示數據,因此頁面的Page_Load()方法應該也調用SetBind():protectedvoidPage_Load(objectsender,EventArgse) { if(!IsPostBack) { SetBind(); } }任務實施步驟一、使用Repeater對商品類別進行管理privatevoidSetBind(){stringstrCon=ConfigurationManager.ConnectionStrings["eshopConnection"].ToString();SqlConnectioncn=newSqlConnection(strCon);stringstrSelect=String.Format("select*fromCategory");SqlDataAdapterda=newSqlDataAdapter(strSelect,cn);DataTabledt=newDataTable();da.Fill(dt);repCategory.DataSource=dt;repCategory.DataBind();}任務實施步驟一、使用Repeater對商品類別進行管理下面,我們可以正式開始添加Repeater的ItemTemplate(循環體)。主要是完成對分類的添加、刪除和修改。此處代碼寫在ItemTemplate內<ItemTemplate><trstyle="background-color:#f0f0f0"><td><asp:ButtonID="btn_DelCategory"runat="server"CommandArgument='<%#Eval("CategoryID")%>'CommandName="DelCategory"Text="×刪除分類"OnClientClick="returnconfirm('確實刪除分類嗎?')"/><asp:TextBoxID="tb_CategoryName"runat="server"Text='<%#Eval("CategoryName")%>'/><asp:ButtonID="btn_ModifyCategory"runat="server"CommandArgument='<%#Eval("CategoryID")%>'CommandName="ModifyCategory"Text="√修改分類"/></td></tr></ItemTemplate>任務實施步驟一、使用Repeater對商品類別進行管理兩個按鈕的CommandArgument屬性都綁定了表的Class字段。修改和刪除分類操作的代碼如下:if(e.CommandName=="DelCategory"){SqlCommandcmd=newSqlCommand("deleteCategorywhereCategoryID=@CategoryID",cn);cmd.Parameters.AddWithValue("@CategoryID",e.CommandArgument);cmd.ExecuteNonQuery();SetBind();}if(e.CommandName=="ModifyCategory"){RepeaterItemri=e.Item;TextBoxtb=ri.FindControl("tb_CategoryName")asTextBox;SqlCommandcmd=newSqlCommand("updateCategorysetCategoryName=@CategoryNamewhereCategoryID=@CategoryID",cn);cmd.Parameters.AddWithValue("@CategoryName",tb.Text);cmd.Parameters.AddWithValue("@CategoryID",e.CommandArgument);cmd.ExecuteNonQuery();SetBind();}任務實施步驟二、對商品信息進行添加、刪除和修改后臺代碼:首先將商品類別綁定至下拉列表框protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){BindDropDownList();}}任務實施步驟二、對商品信息進行添加、刪除和修改privatevoidBindDropDownList(){stringstrCon=ConfigurationManager.ConnectionStrings["eshopConnection"].ToString();SqlConnectioncn=newSqlConnection(strCon);stringstrcmd="select*fromcategory";SqlDataAdapterda=newSqlDataAdapter(strcmd,cn);DataTabledt=newDataTable();da.Fill(dt);ddlCategory.DataSource=dt;ddlCategory.DataTextField="CategoryName";ddlCategory.DataValueField="CategoryID";ddlCategory.DataBind();}任務實施步驟二、對商品信息進行添加、刪除和修改privatevoidBindDropDownList(){stringstrCon=ConfigurationManager.ConnectionStrings["eshopConnection"].ToString();SqlConnectioncn=newSqlConnection(strCon);stringstrcmd="select*fromcategory";SqlDataAdapterda=newSqlDataAdapter(strcmd,cn);DataTabledt=newDataTable();da.Fill(dt);ddlCategory.DataSource=dt;ddlCategory.DataTextField="CategoryName";ddlCategory.DataValueField="CategoryID";ddlCategory.DataBind();}任務實施步驟三、使用文件上傳控件FileUpload,上傳圖片首先,我們來實現一個基本的上傳操作。從工具箱中拖一個FileUpload控件和一個Button控件到頁面上,并把按鈕的Text屬性設置為“上傳”(FileUpload的ID設置為myFile,按鈕的ID設置為btnUpload)。為了能更清晰地看到上傳控件中顯示的內容,我們把它的Width屬性設置為400px。基本的效果如下: protectedvoidbtnUpload_Click(objectsender,EventArgse) { if(myFile.HasFile) { stringstrFileName=myFile.FileName; myFile.SaveAs(Server.MapPath(strFileName)); } else{ Response.Write("請選擇您要上傳的文件"); } }任務實施步驟三、使用文件上傳控件FileUpload,上傳圖片在這里,我們之所以使用FileUpload.HasFile屬性而不使用strFileName來判斷用戶是否選擇了文件是因為HasFile還能考慮到文件為0字節的情況并把這種情況視為沒有選擇任何文件。注意:如果ASP.NET賬戶對于上傳目錄(在這里就是程序所在文件夾)沒有寫入權限系統將拋出“對XXX目錄的訪問被拒絕”異常,你可以通過為文件夾添加一個everyone賬戶并授予寫入權限來解決。任務實施步驟四、使用Repeater對商品信息進行展示使用Repeater完成商品信息的展示。效果圖如下。任務實施步驟四、使用Repeater對商品信息進行展示

DataTablerecordList=newDataTable(); staticintCategoryID=0;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){CurrentIndex=0;BindRepeaterData(CategoryID);}if(Request.QueryString["CategoryID"]!=null){CategoryID=int.Parse(Request.QueryString["CategoryID"].ToString());BindRepeaterData(CategoryID);} ……}任務實施步驟四、使用Repeater對商品信息進行展示

privatevoidBindRepeaterData(intCategoryID){PagedDataSourcepds=newPagedDataSource();if(CategoryID==0){pds.DataSource=GetProductInfo();}else{pds.DataSource=GetProductInfoByCategoryID(String.Format("CategoryID={0}",Categ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論