N2CMS学习之源代码分析一
N2运行起来以后,访问n2后台的页面,系统会自动跳转到登陆页,这是因为在web.config里设置了这样一个节点:
<authentication mode="Forms">
<forms loginUrl="n2/login.aspx" protection="All" timeout="30000" path="/">
<credentials passwordFormat="Clear">
<!-- WARNING: Change this default password. Please do it now. -->
<user name="admin" password="changeme" />
</credentials>
</forms>
</authentication>
输入用户名和密码之后,系统会在下面的代码中进行验证:
if (FormsAuthentication.Authenticate(Login1.UserName, Login1.Password)
|| (System.Web.Security.Membership.ValidateUser(Login1.UserName, Login1.Password) && System.Web.Security.Membership.GetUser(Login1.UserName).IsApproved))
{
e.Authenticated = true;
FormsAuthentication.SetAuthCookie(Login1.UserName, Login1.RememberMeSet);
string returnUrl = FormsAuthentication.GetRedirectUrl(Login1.UserName, Login1.RememberMeSet);
Response.Redirect(returnUrl, true);
}
验证成功以后,会跳转到之前请求的页面(下面以n2/content/default.aspx为例)
在content/default.aspx页面
左边树形导航的加载在N2/content/navigation/tree.aspx中进行:
在代码文件中,有这样一段代码:
foreach (string uploadFolder in Engine.EditManager.UploadFolders)
{
var dd = FS.GetDirectory(uploadFolder);
var dir = Directory.New(dd, root.Current, FS, Engine.Resolve<ImageSizeCache>());
var node = CreateDirectoryNode(FS, dir, root, selectionTrail);
root.Children.Add(node);
}
AddSiteFilesNodes(root, host.DefaultSite, selectionTrail);
foreach (var site in host.Sites)
{
AddSiteFilesNodes(root, site, selectionTrail);
}
分别进行文件夹和文件类型的加载。
其中IHost host = Engine.Resolve<IHost>();
host.Sites是的得到所有的生成的网页
浙公网安备 33010602011771号