asp.net – IsAuthenticated适用于浏览器 – 但不适用于Air客户端!

验证后我的登录代码
var authTicket = new FormsAuthenticationTicket(
                1,userName,DateTime.Now,DateTime.Now.AddMinutes(20),// expiry
                false,roles,"/");
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName,FormsAuthentication.Encrypt(authTicket));
Response.Cookies.Add(cookie);

并且,由于Darin Dimitrov,我有一个自定义的Authorize属性

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class,Inherited = true,AllowMultiple = true)]
public class TJAuthorize : AuthorizeAttribute {
    public override void OnAuthorization(AuthorizationContext filterContext) {
        string cookieName = FormsAuthentication.FormsCookieName;

        if (!filterContext.HttpContext.User.Identity.IsAuthenticated ||
                filterContext.HttpContext.Request.Cookies == null || filterContext.HttpContext.Request.Cookies[cookieName] == null) {
                    HandleUnauthorizedRequest(filterContext);
            return;
        }

        var authCookie = filterContext.HttpContext.Request.Cookies[cookieName];
        var authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        string[] roles = authTicket.UserData.Split(',');

        var userIdentity = new GenericIdentity(authTicket.Name);
        var userPrincipal = new GenericPrincipal(userIdentity,roles);

        filterContext.HttpContext.User = userPrincipal;
        base.OnAuthorization(filterContext);
    }

当我在浏览器会话中工作时,这一切都很好用.但现在我正在使用Flash / Adob​​e Air客户端,并且身份验证属性导致失败.通过将调试语句放入代码中,我可以说:

filterContext.HttpContext.User.Identity.IsAuthenticated

错误的 – 即使在成功登录后!

为什么使用浏览器客户端和Air客户端之间有什么区别?我该如何解决这个问题?

编辑:另一条线索:在输入一些更多的调试语句之后,我发现在从Air调用时没有正确设置filterContext.HttpContext.User.Identity – Name属性为空!会话ID正确,cookie ID正确 – 但未设置User.Identity.任何想法为什么会这样?

解决方法

也许HttpCookieMode(http://msdn.microsoft.com/en-us/library/system.web.httpcookiemode.aspx)被设置为错误的值?

认是UseDeviceProfile …当你强制它使用UseCookies时会发生什么?

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....