CommunityServer研习心得(转)
2008-12-22 16:21
162 查看
整个anf的结构其实都遵循同样的编程模型
都是
请求url->url rewrite->aspx->ascx->load cs->response
把握好一个页面的写作方式,其他就不攻自破了
eg.
aspnetforums/showforum.aspx
controls/view/threadview.cs
AspNetForums.Controls.ForumImageButton
直接用类判断是否有权限
用visable控制显示
// User permissions on new post button
//审核用户的发贴权限!!!!!终于找到了!!!
ForumPermission p = forum.Permission;
User user = Users.GetUser();
if (p.Post == AccessControlEntry.Deny)
{
ForumImageButton newPostButton = (ForumImageButton) skin.FindControl("NewPostButton");
if (newPostButton != null)
{
newPostButton.Visible = false; //直接用visible=false来控制!!
}
}
用 //判断论坛逻辑上是否允许发贴
try {
ForumPermission.AccessCheck(forum, Permission.Post, post);
} catch (ForumException) {
return;
}
显示不同ui和是否有执行某项功能的权限由两个类决定
AspNetForums.ForumPermissions
public static ForumPermission GetForumPermission (int forumID, int roleID)
public static ArrayList GetForumPermissions (int forumID)
和
AspNetForums.Components.User
AspNetForums.Components.UserCookie
来存储权限信息
页面之间权限的持续化由ForumContext类实现
本质是通过HttpContext存储
好像是生成了一个自定义Vcard对象的序列化字段在b/s间通讯
继续研究!!!
anf中,Http Module主要用于url rewrite,权限验证,页面预处理等等
<!-- START - AspNetForums specific application settings -->
<httpModules>
<add name="AspNetForums" type="AspNetForums.ForumsHttpModule, AspNetForums.Components" />
</httpModules>
<httpHandlers>
<add verb="GET" path="avatar.aspx" type="AspNetForums.Components.HttpHandler.AvatarHttpHandler, AspNetForums.Components" />
<add verb="GET" path="vcard.aspx" type="AspNetForums.Components.HttpHandler.VCardHttpHandler, AspNetForums.Components" />
</httpHandlers>
而http handler主要实现不需要返回页面的处理的实现
因为http handler会截获request而不转入实际aspx页面处理
Forums用的是.Net的form验证,你只要用Page.Request.IsAuthenticated就可以判断是否登陆!
保存用户信息的几种方法
Cookie:
Response.Cookies.Add(new HttpCookie("currPage","1"));
currPage=Int32.Parse(Request.Cookies["currPage"].Value);
Session:
Session["currPage"]=1;
currPage=(int)Session["currPage"];
ViewState:
this.ViewState["currPage"]=1;
currPage=Int32.Parse(this.ViewState["currPage"]);
QuringString:
Movie.aspx?currPage=1;
currPage=Int32.Parse(Request.QueryString["currPage"]);
Attributes:
txtPage.Attributes.Add("currPage",1);
currPage=Int32.Parse(txtPage.Attributes["currPage"]);
所有通过 ASP.NET 引擎传递的请求最终都将到达 HTTP 处理程序或 HTTP 处理程序工厂(HTTP 处理程序工厂仅返回 HTTP 处理程序的实例,然后使用该实例来处理请求)。最终的 HTTP 处理程序将返回响应,即呈现被请求的资源。此响应将被发送回 IIS,然后 IIS 将响应返回给提出请求的用户。
ASP.NET 包括许多内置的 HTTP 处理程序。例如,PageHandlerFactory 用于呈现 ASP.NET 网页。WebServiceHandlerFactory 用于呈现 ASP.NET Web 服务的响应 SOAP 信封。TraceHandler 将向 trace.axd 呈现请求的 HTML 标记。
都是
请求url->url rewrite->aspx->ascx->load cs->response
把握好一个页面的写作方式,其他就不攻自破了
eg.
aspnetforums/showforum.aspx
controls/view/threadview.cs
AspNetForums.Controls.ForumImageButton
直接用类判断是否有权限
用visable控制显示
// User permissions on new post button
//审核用户的发贴权限!!!!!终于找到了!!!
ForumPermission p = forum.Permission;
User user = Users.GetUser();
if (p.Post == AccessControlEntry.Deny)
{
ForumImageButton newPostButton = (ForumImageButton) skin.FindControl("NewPostButton");
if (newPostButton != null)
{
newPostButton.Visible = false; //直接用visible=false来控制!!
}
}
用 //判断论坛逻辑上是否允许发贴
try {
ForumPermission.AccessCheck(forum, Permission.Post, post);
} catch (ForumException) {
return;
}
显示不同ui和是否有执行某项功能的权限由两个类决定
AspNetForums.ForumPermissions
public static ForumPermission GetForumPermission (int forumID, int roleID)
public static ArrayList GetForumPermissions (int forumID)
和
AspNetForums.Components.User
AspNetForums.Components.UserCookie
来存储权限信息
页面之间权限的持续化由ForumContext类实现
本质是通过HttpContext存储
好像是生成了一个自定义Vcard对象的序列化字段在b/s间通讯
继续研究!!!
anf中,Http Module主要用于url rewrite,权限验证,页面预处理等等
<!-- START - AspNetForums specific application settings -->
<httpModules>
<add name="AspNetForums" type="AspNetForums.ForumsHttpModule, AspNetForums.Components" />
</httpModules>
<httpHandlers>
<add verb="GET" path="avatar.aspx" type="AspNetForums.Components.HttpHandler.AvatarHttpHandler, AspNetForums.Components" />
<add verb="GET" path="vcard.aspx" type="AspNetForums.Components.HttpHandler.VCardHttpHandler, AspNetForums.Components" />
</httpHandlers>
而http handler主要实现不需要返回页面的处理的实现
因为http handler会截获request而不转入实际aspx页面处理
Forums用的是.Net的form验证,你只要用Page.Request.IsAuthenticated就可以判断是否登陆!
保存用户信息的几种方法
Cookie:
Response.Cookies.Add(new HttpCookie("currPage","1"));
currPage=Int32.Parse(Request.Cookies["currPage"].Value);
Session:
Session["currPage"]=1;
currPage=(int)Session["currPage"];
ViewState:
this.ViewState["currPage"]=1;
currPage=Int32.Parse(this.ViewState["currPage"]);
QuringString:
Movie.aspx?currPage=1;
currPage=Int32.Parse(Request.QueryString["currPage"]);
Attributes:
txtPage.Attributes.Add("currPage",1);
currPage=Int32.Parse(txtPage.Attributes["currPage"]);
所有通过 ASP.NET 引擎传递的请求最终都将到达 HTTP 处理程序或 HTTP 处理程序工厂(HTTP 处理程序工厂仅返回 HTTP 处理程序的实例,然后使用该实例来处理请求)。最终的 HTTP 处理程序将返回响应,即呈现被请求的资源。此响应将被发送回 IIS,然后 IIS 将响应返回给提出请求的用户。
ASP.NET 包括许多内置的 HTTP 处理程序。例如,PageHandlerFactory 用于呈现 ASP.NET 网页。WebServiceHandlerFactory 用于呈现 ASP.NET Web 服务的响应 SOAP 信封。TraceHandler 将向 trace.axd 呈现请求的 HTML 标记。
相关文章推荐
- CommunityServer研习心得 [转]
- CommunityServer研习心得
- “Implementing SCORM 1.3” 研习营心得摘要(胡正亨)
- CommunityServer2.0改造的一些心得[粗糙版]
- XML文档数据操作心得
- LINQ学习心得分享--------(一)LINQ简介和基础学习
- 阿里云RDS 数据库恢复工具Percona XtraBackup 实战心得(都是心酸血泪啊)
- 八天集训心得
- .NET分层开发的几点心得
- 关于jQuery UI 使用心得及技巧
- Unity5的AssetBundle的一点使用心得
- 林轩田机器学习基石心得5:Training versus Testing
- coder个人编程心得总结
- xml语法-->张国亮--总结心得第二季
- SharedPreferences的使用心得
- 1.22学习心得
- 学习心得
- LINQ学习心得分享--------(四)LINQ TO XML实用解析
- 关于rand和srand函数使用的一点心得
- <Introduction to Discrete-event systems>学习心得(二)