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以后验证票居然不失效。