高人进哈..票据验证

后浪 2008-12-17 09:06:49
void Application_AuthorizeRequest(object sender, System.EventArgs e)
{
//这里是得到的什么东西,请具体点.再就是票据验证有什么用
HttpContext Cxt = ((HttpApplication)sender).Context;
if (Cxt.User.Identity.IsAuthenticated)//这里是怎么通过的验证,
验证的什么东西

{

FormsIdentity id = (FormsIdentity)Cxt.User.Identity;
string[] roles = id.Ticket.UserData.Split(',');

GenericPrincipal user = new GenericPrincipal(id, roles);
Cxt.User = user;
}
}
...全文
224 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jack_xiao 2008-12-19
  • 打赏
  • 举报
回复
if (Cxt.User.Identity.IsAuthenticated)//这里是怎么通过的验证,
这里并没有验证的细节,是不是客户端脚本验证?
sjt000 2008-12-19
  • 打赏
  • 举报
回复
我也不太清楚,等高人
后浪 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 greatverve 的回复:]
这是全部的用法,我也只是会用。并不很清楚机理。
[/Quote]
我先觉得我好像里面的东西都懂了..但是有人问我
Cxt.User.Identity.IsAuthenticated是怎么通过验证的..就傻眼了一下
我在想是不是写好票据.cookie,运行后就是算通过了验证吗?
后浪 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 heyu1000 的回复:]
HttpContext对象就是封装了一些HTTP信息的东西啊
Cxt.User.Identity.IsAuthenticated看用户是否已经过验证.
下面代码一般用在登陆的时候,可以参考一下.
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
LogonContext.IdentityName.ToString().ToLower(),//用户标识:name
false,//是否持久性:isPersistent
30//过期时间:expirat…
[/Quote]
1.请问一下你说的"HttpContext对象就是封装了一些HTTP信息的东西啊",是不是就是前台页面提交的所有东西呢?
还包括票据验证..
2.再就是不写cookie可以吗?我觉得票据就是票据,cookie只是保存它的值,但是如果不写又不行...为什么呢?
zjybushiren88888 2008-12-18
  • 打赏
  • 举报
回复
好象是验证用户的身份
Page.User.Identity.IsAuthenticated
jiangshun 2008-12-18
  • 打赏
  • 举报
回复
关注
ReyZhang 2008-12-18
  • 打赏
  • 举报
回复
up
greatverve 2008-12-18
  • 打赏
  • 举报
回复
这是全部的用法,我也只是会用。并不很清楚机理。
greatverve 2008-12-18
  • 打赏
  • 举报
回复
有时间把票据总结一下。
#region BLL

/*FormsAuthenticationTicket用于 Forms 身份验证对用户进行标识
* 构造方法:(版本,用户名,票证发出日期,过期日期,是否跨浏览器,保存的数据,cookie路径)
*
* FormsAuthentication提供了相应的方法和属性,您可以在需对用户进行身份验证的应用程序中使用它们
* FormsCookiePath该属性取得cookie路径,
* FormsCookieName名字cookie
* Encrypt创建一个字符串,其中包含适用于 HTTP Cookie 的加密的 Forms 身份验证票证。
*/

/// <summary>
/// 设置COOKIE
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
public void SetCookie(string username,int day)
{
DataTable table = getUser(username);
if (table.Rows.Count > 0)
{
int userID = int.Parse(table.Rows[0]["UserID"].ToString());
int power = int.Parse(table.Rows[0]["Power"].ToString());
string userData = username.Replace(@"\", @"\\") + "#" + power.ToString();

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userID.ToString(), DateTime.Now, DateTime.Now.AddMinutes(60), false, userData, FormsAuthentication.FormsCookiePath);
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie newCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
//设置过期时间
if (day > 0)
{
newCookie.Expires = DateTime.Now.AddDays(day);//这里可以用AddDays(1d)
}
HttpContext.Current.Response.Cookies.Add(newCookie);
}
}
/// <summary>
/// 设置COOKIE
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
public void SetCookie(string username)
{
DataTable table = getUser(username);
if (table.Rows.Count > 0)
{
int userID = int.Parse(table.Rows[0]["UserID"].ToString());
int power = int.Parse(table.Rows[0]["Power"].ToString());
string userData = username.Replace(@"\", @"\\") + "#" + power.ToString();

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userID.ToString(), DateTime.Now, DateTime.Now.AddMinutes(60), false, userData, FormsAuthentication.FormsCookiePath);
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie newCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
HttpContext.Current.Response.Cookies.Add(newCookie);
}
}
/// <summary>
/// 判断用户是否登录
/// </summary>
/// <returns>已登录返回true</returns>
public bool IsLogin()
{
return HttpContext.Current.User.Identity.IsAuthenticated;
}
/// <summary>
/// 退出登录
/// </summary>
public void Logout()
{
FormsAuthentication.SignOut();
}
/// <summary>
/// 获取登录的用户ID
/// </summary>
/// <returns></returns>
public int getUserID()
{
if (IsLogin())
{
return Convert.ToInt32(HttpContext.Current.User.Identity.Name);
}
else
{
return -1;
}
}
/// <summary>
/// 获得用户名
/// </summary>
/// <returns></returns>
public string getUserName()
{
if (IsLogin())
{
string strUserData = ((FormsIdentity)(HttpContext.Current.User.Identity)).Ticket.UserData;
string[] UserData = strUserData.Split(new string[] { @"#" }, StringSplitOptions.RemoveEmptyEntries);
if (UserData.Length > 0)
{
return UserData[0].Replace(@"\\", @"\");
}
else
return "";
}
else
{
return "";
}
}
/// <summary>
/// 返回用户的角色
/// </summary>
/// <returns></returns>
public int getUserRole()
{
if (IsLogin())
{
string strUserData = ((FormsIdentity)(HttpContext.Current.User.Identity)).Ticket.UserData;
string[] UserData = strUserData.Split(new string[] { @"#" }, StringSplitOptions.RemoveEmptyEntries);
if (UserData.Length > 0)
{
return Int32.Parse(UserData[1]);
}
else
return -1;
}
else
{
return -1;
}
}

#endregion
supremeholy 2008-12-18
  • 打赏
  • 举报
回复
顶2楼
mrhu7002 2008-12-18
  • 打赏
  • 举报
回复
票据验证有很多的方式,可以通过绑定IP地址读取数据库状态的方式···
shinlgienls 2008-12-17
  • 打赏
  • 举报
回复
看上去 像是验证用户,


Cxt.User.Identity.IsAuthenticated 可能是引用了你们的命名空间中的一个类 来验证什么 返回false 或者true
怫悰 2008-12-17
  • 打赏
  • 举报
回复
冒泡帮顶接分

if (Cxt.User.Identity.IsAuthenticated)//这里是怎么通过的验证,
验证的什么东西

在之前的AuthenticateRequest(object sender, System.EventArgs e)事件中进行了验证
heyu1000 2008-12-17
  • 打赏
  • 举报
回复
HttpContext对象就是封装了一些HTTP信息的东西啊
Cxt.User.Identity.IsAuthenticated看用户是否已经过验证.
下面代码一般用在登陆的时候,可以参考一下.
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
LogonContext.IdentityName.ToString().ToLower(),//用户标识:name
false,//是否持久性:isPersistent
30//过期时间:expiration
);
string hashTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);
HttpContext.Current.Response.Cookies.Add(UserCookie);
这样的方式.

在GOOGLE里面搜一下ASP.NET验证票,一大堆相关知识.
http://blog.csdn.net/a3676212/archive/2008/12/02/3431087.aspx
这篇文章对你应该有帮助
chengdishuai 2008-12-17
  • 打赏
  • 举报
回复
不是很清楚

62,269

社区成员

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

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

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

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