繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> Forms身份验证自已总结的解决方案

Forms身份验证自已总结的解决方案

2007-09-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:一:web.config配制文件 //这里用限制某一目录下的页面或...

一:web.config配制文件

//这里用限制某一目录下的页面或某一页中可以访问的角色,如果角色不对,自动导向到LOGOn.ASPx页面,很方便,但缺点是人性化不高,不能弹出提示,所以下面用在每个页面的pageLoad事件里判断角色再转向。

二:LOGOn.ASPx页面

//在用户登录验证完毕后调用此方法写cookie,用户名作cookie名,用户角色 作为cookie的内容

private void setCook(string userName,string userRole)

{

HttpCookie hk;

FormsAuthenticationTicket Fat ;

Fat = new FormsAuthenticationTicket(1,userName,DateTime.Now,DateTime.Now.AddMinutes(30),false,userRole);

string hashTicket = FormsAuthentication.Encrypt(Fat);

hk = new HttpCookie(FormsAuthentication.FormsCookieName,hashTicket);

hk.Expires=Fat.Expiration;

HttpContext.Current.Response.Cookies.Add(hk);

}

此方法底下还有两句,导到原请求页面去的,但在第一次登录的时候会自动导到default.ASPx页面,所以取消了。

1string requestUrl = FormsAuthentication.GetRedirectUrl(FormsAuthentication.FormsCookieName,false);

2HttpContext.Current.Response.Redirect(requestUrl);

三:Global.asax页面

protected void Application_AuthenticateRequest(Object sender, EventArgs e)

{

if(HttpContext.Current.User!=null) //验证用户不为空

{

if(HttpContext.Current.User.Identity.IsAuthenticated)//是通过验证了的

{

FormsIdentity fi = (FormsIdentity)HttpContext.Current.User.Identity; //Forms身份验证

FormsAuthenticationTicket ticket = fi.Ticket; //取得票据

string userData = ticket.UserData; //取得信息

string[] roles = userData.Split(',');

HttpContext.Current.User = new GenericPrincipal(fi,roles); //把角色信息写入当前用户

}

}

}

四:在任意页面中

private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

if(HttpContext.Current.User.IsInRole("Adminisrator"))

{

Response.Write("是这个角色");//做你想要的操作

}

else

{

//先弹出提示然后再导向到登录页面。 如果不用提示,则前的的配制节就可以了0

Response.Write("");

}

}

//注销

FormsAuthentication.SignOut();//注销

Response.Redirect("LOGOn.ASPx",true);

责任编辑:admin
相关文章