判断用户是否登录,在每个页的page_load里都写吗

乐于编程 2012-06-22 09:32:32
网站添加了 登录功能后,在每个页的 page_load 里都写吗?
...全文
722 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaosi2772 2013-09-17
  • 打赏
  • 举报
回复
引用 3 楼 ForEvErNoME 的回复:
 public class ManagePage:System.Web.UI.Page
    {
        public ManagePage()
        {
            this.Load+=new EventHandler(ManagePage_Load);
        }

        public void ManagePage_Load(object sender, EventArgs e)
        {
            //如果Session为Null
            if (Session["AdminName"] == null)
            {
                Response.Write(" <script type='text/javascript'>parent.location.href='login.aspx'</script>");
                Response.End();
            }
        }
    }

//继承ManagePage
public partial class admin_center : ManagePage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}
谁能讲解一下这个程序,我不是很清楚?
乐于编程 2012-08-04
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class NeiWangUserControls_ManageMenu : InitPage
{
protected void Page_Load(object sender, EventArgs e)
{
//
}
}

乐于编程 2012-08-04
  • 打赏
  • 举报
回复
还是继承一下 ASCX ,简单方便,具体代码如下:
这是一个类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;

/// <summary>
///InitPage 的摘要说明 System.Web.UI.UserControl
/// </summary>
public class InitPage:System.Web.UI.UserControl
{
public InitPage()
{
//
//TODO: 在此处添加构造函数逻辑
//
}

protected override void OnLoad(EventArgs e)
{
if (Session["sessionusername"] == null)
{
Response.Redirect("../RegisterLogin/userLogin.aspx");
}
base.OnLoad(e);
}
}

这是 ASCX 的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class NeiWangUserControls_ManageMenu : InitPage
{
protected void Page_Load(object sender, EventArgs e)
{
//
}
}

乐于编程 2012-07-16
  • 打赏
  • 举报
回复
还是用 ASCX继承比较方便,容易一些。
sunyun8858 2012-06-28
  • 打赏
  • 举报
回复
httpmodule中做判断
事理 2012-06-28
  • 打赏
  • 举报
回复
各位不好意思,上次说的“HttpModule是在页面执行之前就进入,调试却发现是Page_Load先执行”这个的确是错误的,原因是我自己在HttpModule跳转页面使用的是Response.Write跳转,而且后面没有Response.End()所以页面还会继续执行Page_Load,使用Response.Redirect跳转页面就不会有这个问题。
顺便说一下PageBase页面继承验证可能还没有HttpModule做登录验证好,因为HttpModule的AcquireRequestState事件是在Page_load事件之前执行的。

2012-6-28 15:59:11:989 + IHttpModule:BeginRequest(执行Http请求管线链中第一个事件时发生)
2012-6-28 15:59:11:989 + IHttpModule:AuthenticateRequest(安全模块建立用户标记时发生)
2012-6-28 15:59:11:989 + IHttpModule:PostAuthenticateRequest(已建立用户标识时发生)
2012-6-28 15:59:12:004 + IHttpModule:AuthorizeRequest(安全模块验证用户授权时发生)
2012-6-28 15:59:12:004 + IHttpModule:PostAuthorizeRequest(当前请求的用户已获得授权时发生)
2012-6-28 15:59:12:004 + IHttpModule:ResolveRequestCache(从缓存中发生数据请求时)
2012-6-28 15:59:12:004 + IHttpModule:PostResolveRequestCache(跳过当前请求并接受来自缓存数据时发生)
2012-6-28 15:59:12:020 + IHttpModule:PostMapRequestHandler(当前请求事件映射到相应事件后发生)
2012-6-28 15:59:12:020 + IHttpModule:AcquireRequestState(与当前建立会话时发生) Session未收到!
2012-6-28 15:59:12:020 + IHttpModule:PostAcquireRequestState(已经获得当前请求状态时发生) Session未收到!
2012-6-28 15:59:12:020 + IHttpModule:PreRequestHandlerExecute(页面事件执行前发生) Session未收到!
2012-6-28 15:59:12:036 + Page:Page_PreInit
2012-6-28 15:59:12:036 + Page:Page_Init
2012-6-28 15:59:12:036 + Page:Page_InitComplete
2012-6-28 15:59:12:036 + Page:Page_PreLoad
2012-6-28 15:59:12:036 + Page:Page_Load
2012-6-28 15:59:12:036 + Page:Page_LoadComplete
2012-6-28 15:59:12:036 + Page:Page_PreRender
2012-6-28 15:59:12:036 + Page:Page_PreRenderComplete
2012-6-28 15:59:12:051 + Page:Page_SaveStateComplete


2012-6-28 15:59:12:051 + IHttpModule:PostRequestHandlerExecute(ASP.Net事件执行完毕时发生)
2012-6-28 15:59:12:051 + IHttpModule:ReleaseRequestState(事件执行完成之后状态处理)
2012-6-28 15:59:12:051 + PostReleaseRequestState(完成请求事件并且请求状态已存储时发生)
2012-6-28 15:59:12:051 + IHttpModule:UpdateRequestCache(时间执行完毕,为缓存新的事件准备)
2012-6-28 15:59:12:051 + IHttpModule:PostUpdateRequestCache(事件缓存被更新时发生)
2012-6-28 15:59:12:051 + IHttpModule:EndRequest(执行Http请求管线链中最后一个事件时发生)
2012-6-28 15:59:12:051 + IHttpModule:PreSendRequestHeaders(向客户端发送HttP头之前发生)
  • 打赏
  • 举报
回复
写一个判断类 去继承这个类咯
MSDNXGH 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

我是写一个父类 。需要的页面继承该类 。
[/Quote]
我也是,
紫魂一号 2012-06-25
  • 打赏
  • 举报
回复
可以写个基类然后其他的去继承,基类直接验证好了。当然上面说的弄一个专门的用于验证保存的用户控件,哪里要用拖哪里。这种方式便于专人的维护。。符合封装的思想。。
槑党--一缕风 2012-06-25
  • 打赏
  • 举报
回复
BasePage 或者模版页都可以啊~~
yyc48337279 2012-06-25
  • 打赏
  • 举报
回复
把用于信息写入Session,在请求每个页面的时候去Session里边读取,如果用户已是登录状态,就直接显示。否则就跳回登录页面
想念旧时光 2012-06-25
  • 打赏
  • 举报
回复
你可以写一个父类、在父类里面进行判断、然后所有的页面都继承你的父类不就好了么?
yp19910928 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

如果使用Forms验证的话,不用写,直接在web.config里面配置就可以了

Forms验证例子
[/Quote]

这个可以
代码小天王 2012-06-24
  • 打赏
  • 举报
回复
哥们 看来你不明白httpmodule的意思
[Quote=引用 28 楼 的回复:]

我使用了HttpModule和HttpHandler做了登录验证,发现HttpModule是在页面Page_Load事件执行完毕后才进入,如果Page_Load中加入了初始化页面信息的代码,那么每次访问该页面都会执行这些代码,而HttpHandler则没有这种问题。HttpModule我的理解是在页面执行之前就进入,调试却发现是Page_Load先执行,不解。global.asax中登录验证暂未……
[/Quote]
事理 2012-06-24
  • 打赏
  • 举报
回复
我使用了HttpModule和HttpHandler做了登录验证,发现HttpModule是在页面Page_Load事件执行完毕后才进入,如果Page_Load中加入了初始化页面信息的代码,那么每次访问该页面都会执行这些代码,而HttpHandler则没有这种问题。HttpModule我的理解是在页面执行之前就进入,调试却发现是Page_Load先执行,不解。global.asax中登录验证暂未测试。
失落的code 2012-06-23
  • 打赏
  • 举报
回复
这个……难道在DAL的基类中写不是更好么,反正每次查询数据库的时候都要验证用户名和密码吧,取不到用户名的时候redirect不就行了。。。
cs_esharp 2012-06-23
  • 打赏
  • 举报
回复
用IhttpModule来处理,这样不用每个页面去写
事理 2012-06-23
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

引用 15 楼 的回复:

写个pagebase每次继承也觉得很烦。


对的!

从这个帖子反映了一种现象,如果不给代码供抄袭许多人就懒得动脑筋去想一想。

其实你把那一行代码写到一个ascx中,显然要比创建一个父类还快。而且随意用鼠标拖到aspx中,丝毫不会烦的。
[/Quote]

这个倒是没有想到,人太傻了,学习了。
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
global.asax中能实现控制每一个目录的权限么?
[/Quote]

晕!你在httpmodule都可以判断用户是否登录,在global.asax中就不会了?
事理 2012-06-23
  • 打赏
  • 举报
回复
我就是觉得那种挺方便的,是不是IHttpHandler会影响到网站的执行效率?菜鸟不懂哦
加载更多回复(20)

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧