asp.net用户身份验证的问题,郁闷一天了~

pjb12345 2010-01-07 05:38:44
我在做一个交友类的网站,有些页面要登录后才能看到,跟别人学了一个方法就是写一个身份验证的类,让凡是要经过验证的
页面都继承这个类,刚开始的时候还行,我就继续往下做,不知道动了什么地方,现在回过去看验证不起作用了,老是报错,说是“未将对象的引用设置到对象的实例”,我理解这个错误,但不明白为什么验证代码不起作用了,为什么不跳转到登录页面,而是继续向下运行:代码如下:

身份验证类:


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using ylsn.Model;
namespace ylsn.Common
{

/// <summary>
///前台用户页面的基类,同一身份验证
/// </summary>
public class CommonPage : Page
{
public CommonPage()
{
//在所有页面中利用页面加载事件统一身份验证
Load += new EventHandler(CommonPage_Load);
}

void CommonPage_Load(object sender, EventArgs e)
{

//如果不存在会员会话信息则跳转到用户登录页面
if (Session["userId"] == null)
{
JScript.AlertAndRedirect("您还没登录,请先登录!", "login.aspx", this);
}
}
}
}


页面代码:




namespace ylsn.Web
{
public partial class userCenter : ylsn.Common.CommonPage
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
//取得两个对象实例
int userId = (int)Session["userId"];
...
下面代码省略
...
}
}
}
}
...全文
108 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pjb12345 2010-01-09
  • 打赏
  • 举报
回复
dfdfdf
fhjzgsy 2010-01-07
  • 打赏
  • 举报
回复
设个断电走走,看看,是哪里为空了,进行判断!
pjb12345 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hualilihua 的回复:]
              int userId = (int)Session["userId"];
        就是这的问题
[/Quote]

你可能没理解我的意思,我的意思是在没登录的情况下怎么会执行到这个地方!假如这个页面是userCenter.aspx,登录页面是:login.aspx,usercenter.aspx.cs中的类继承了上面那个验证类,在没登录的情况下访问usercenter.aspx,应该跳转到login.aspx才对,但实际情况是没跳转,并且运行到int userId = (int)Session["userId"]这个地方就出错了!
回头是岸 2010-01-07
  • 打赏
  • 举报
回复
int userId = (int)Session["userId"];
就是这的问题
回头是岸 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wapit 的回复:]
C# code//取得两个对象实例//int userId = (int)Session["userId"];//改为:int userId=0;if(Session["userId"]!=null)
{
userId=(int)Session["userId"];
}
[/Quote]
pjb12345 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 asharpnet 的回复:]
C# codeif(Session["userId"]!=null)
{
userId=(int)Session["userId"];
}else
{
Response.Redirect("login.aspx");
}
[/Quote]

谢谢这位仁兄,我只是想知道我自己写的那个验证代码为什么不起作用了,就是为什么在没登录的情况下访问需要验证的网页不跳转到登录页!
asharpnet 2010-01-07
  • 打赏
  • 举报
回复

if(Session["userId"]!=null)
{
userId=(int)Session["userId"];
}
else
{
Response.Redirect("login.aspx");
}
pjb12345 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mngzilin 的回复:]
引用楼主 pjb12345 的回复:
不明白为什么验证代码不起作用了,为什么不跳转到登录页面,而是继续向下运行:代码如下:

哪句验证代码没有起作用?
[/Quote]

在没登录的情况下,为什么没跳转到login.aspx,而是直接向下执行,到userId=(int)Session["userId"]这一句就会发生错误!
pjb12345 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wapit 的回复:]
C# code//取得两个对象实例//int userId = (int)Session["userId"];//改为:int userId=0;if(Session["userId"]!=null)
{
userId=(int)Session["userId"];
}
[/Quote]

这样肯定不行啊,下面的代码要用到 userId,不过还是多谢!!!
mngzilin 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 pjb12345 的回复:]
不明白为什么验证代码不起作用了,为什么不跳转到登录页面,而是继续向下运行:代码如下:
[/Quote]
哪句验证代码没有起作用?
yan267 2010-01-07
  • 打赏
  • 举报
回复
看不出什么问题。

JScript.AlertAndRedirect("您还没登录,请先登录!", "login.aspx", this);

这个也许是错误的地方。
wapit 2010-01-07
  • 打赏
  • 举报
回复
  
//取得两个对象实例
//int userId = (int)Session["userId"];
//改为:
int userId=0;
if(Session["userId"]!=null)
{
userId=(int)Session["userId"];
}

62,046

社区成员

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

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

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

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