我正在为 Windows Azure 云开发一个新的 Web 应用程序,但对所有可用的指南、最佳实践、存储可能性、缓存和安全性感到困惑。我看过大量视频,阅读大量文档,但我阅读的越多,决策层就越混乱。这就是我想要的:
1 - 开发一个 Web 应用程序,用户可以在其中使用电子邮件/密码组合登录。登录时,用户将有一个包含 UserID+CustomerID 组合的会话。UserID+CustomerID 将用于显示该用户的特定数据。该应用程序是针对律师事务所的,因此安全性必须非常严格。该应用程序将拥有 10000 多个用户,并且可能同时有大约 200-500 个用户。我已阅读 ASP.NET 会话应存储在共享缓存服务中,以便在节点升级/故障节点的情况下不会重置会话。据我了解,128 mb 缓存每秒有 100 个事务限制 - 我不确定这是否有效 - 如果我从缓存中获取会话数据,这是否算作一个事务?
在一个旧应用程序中,我正在使用这样的代码(这种方法是否适合 Azure,或者我应该开发一些自定义会话管理系统来处理?任何代码示例?):
protected void CustomValidatorLogin_ServerValidate(object source, ServerValidateEventArgs args)
{
string result = String.Empty;
if (DataAccess.User_Logon(this.txtEmail.Text, this.txtPassword.Text, Request.UserHostAddress, Request.UserAgent, ref result)
{
args.IsValid = true;
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, this.txtEmail.Text, DateTime.Now, DateTime.Now.AddMinutes(Constants.sessionExpires), false, result);
HttpCookie cookie = null;
if (cbRemember.Checked)
{
FormsAuthenticationTicket sticket = new FormsAuthenticationTicket(1, result, DateTime.Now, DateTime.Now.AddMinutes(Constants.sessionExpires), false, result);
cookie = new HttpCookie(FormsAuthentication.FormsCookieName + Constants.cookiePrefix, FormsAuthentication.Encrypt(sticket));
cookie.Expires = DateTime.Now.AddYears(1);
}
else
{
cookie = new HttpCookie(FormsAuthentication.FormsCookieName + Constants.cookiePrefix, string.Empty);
cookie.Expires = DateTime.Now.AddYears(-1);
}
Response.AppendCookie(cookie);
FormsAuthentication.SetAuthCookie(result, false);
}
else
{
args.IsValid = false;
}
}
2 - 类似,根据这个 http://www.windowsazure.com/en-us/develop/net/best-practices/security/ 有很多我应该注意的安全注意事项。任何人都可以推荐一些关于如何创建登录功能的代码示例,并采用这些最佳实践吗?
3 - 系统将允许用户保存数据(上传文件),以后可以下载、删除、更新。这些文件既是用户特定的 (UserID),也是客户特定的 (CustomerID)。例如,用户可以上传一个只有他有权访问的文件(UserID),但他也可以上传一个基于 CustomerID 可供整个组织(律师事务所)使用的文件。我很困惑是选择 BLOB 还是 Tables 以及为什么。此外,实现此类功能的最佳实践是什么。
4 - 我正在考虑使用 Enterprise Library for Data Access Layer - 有人知道适用于 Azure 新手的好的视频演练吗?
这是我知道的很多问题,但仍然希望得到一些专家的建议。
干杯。