Forms验证模式
登陆界面 c/s(类似于QQ)
其他系统 b/s(类似于QQ邮箱)
登陆:
服务端:设置AuthenticationService服务,根据需要还可以设置RoleService,ProfileService;
客户端(登陆端):引用系统服务,登录验证后,得到Cookie,得到验证票的字符串
访问其他系统网站:递交验证票字符串参数(ticket)和网址参数(Url)给特定的页面
其他系统:
特定页面操作:
根据验证票字符串设置上下文并跳转页面,代码如下
if (Request["ticket"] != null)
{
string tickets = Request["ticket"];
FormsAuthenticationTicket ti = FormsAuthentication.Decrypt(tickets);
FormsIdentity fi = new FormsIdentity(ti);
GenericPrincipal p = new GenericPrincipal(fi, new string[]{});
HttpContext.Current.User = p;
FormsAuthentication.SetAuthCookie(HttpContext.Current.User.Identity.Name, false);
Response.Redirect("Url");
}
待解决问题是:
登录系统AuthenticationService执行Logout以后验证票居然不失效。