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是的得到所有的生成的网页

posted on 2012-09-09 18:40  张伟0530  阅读(565)  评论(1)    收藏  举报