login.aspx
用户随时都可以通过click the "Sign In" button in the header (_Header.ascx)。
IbuySpy使用的是Forms-based authentication,which is enabled by making a entry in the application's Web.config file.
有些页面(CheckOut.aspx。。。)必需认证了的用户才能够进入,如何确定该用户是否认证用户呢?
这些页面并不是在该页中书写代码来验证进入者是否为认证用户。
它们是在webconfig中间设置了进入障碍。
那么,在这些页面无法进入的情况下,我们会跳转到另外的页面,而跳转到哪个页面也是有webconfig来设置的。
在Web.config 中的The loginurl attribute specifies the login page that the application should redirect to any time a user attempts to access an application resource that does not allow anonymous access.
在login。aspx页面中:
如果login成功了,那么the LoginBtn_Click event handler performs three important actions: 与代码进行对照。
1,将临时cart中的items转到个人的cart中,这样信息就不会丢失,有助于以后的使用。
shoppingCart.MigrateCart(tempCartID, customerId);
实际上,只是将原来购物车的TemperaryID改成了该用户的名字而已。
2,给client一个personalization的cookie,那么在以后进入default。aspx时,能够看到customed personal welcome。
Response.Cookies["IBuySpy_FullName"].Value = customerDetails.FullName;
3,调用RedirectFromLoginPage() static method ,This is a built-in ASP.NET class。 作用是:这个method发出一个mac的加密的cookie认证ticket到客户端浏览器来确认认证了的客户username。在这个程序中,我们使用Customer ID来作为客户的认证名。在随后的对这个程序的请求中,我们仍然可以使用这个用户名。在发出了认证ticket到客户端浏览器后,这个method即RedirectFromLoginPage()能够使浏览器返回到the login page navigation came from.
(originating page?default.aspx,其实这里的意思是:如果试图进入restricked的页面,同时你还没有login的话,会redirect到login page,而后,回到restricked page,如果是直接点击上面的sign in标签的话,而后,会回到default。page)
FormsAuthentication.RedirectFromLoginPage(customerId,RememberLogin.Checked);
实际上,用来标志用户身份的CustomerID也就是该用户的ShoppingCartID,用来标志购物车
从这句代码可以看出:
// Migrate any existing shopping cart items into the permanent shopping cart
shoppingCart.MigrateCart(tempCartID, customerId);
1,CustomerID是由login的用户的用户名和密码确定的:
IBuySpy.CustomersDB accountSystem = new IBuySpy.CustomersDB();
String customerId = accountSystem.Login(email.Text, password.Text);
2,ShoppingCartID是由用户名(已登陆)或者TemperaryID决定。
IBuySpy.ShoppingCartDB shoppingCart = new IBuySpy.ShoppingCartDB();
String tempCartID = shoppingCart.GetShoppingCartId();
而在现实中,情况的确也是这样:
// If the user is authenticated, use their customerId as a permanent shopping cart id
if (context.User.Identity.Name != "") {
return context.User.Identity.Name;
}