My giriş kodu: Darin Dimitrov içinIsAuthenticated tarayıcıda çalışır - ancak Air client ile değil! Kimlik doğrulama sonrasında
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);
ve teşekkürler, özel bir özellik yetkilendirme vardır: Bir tarayıcı oturumunda Çalışırken Bu, tüm güzel çalışıyor
[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);
}
. Ama şimdi bir Flash/Adobe Air istemcisi ile çalışıyorum ve kimlik doğrulama özelliği bir hataya neden oluyor. koduna ayıklama ifadeleri koyarak, bunu söyleyebilirim:
filterContext.HttpContext.User.Identity.IsAuthenticated
yanlıştır - hatta başarılı bir girişten sonra!
Neden Bir tarayıcı istemcisi ve Hava istemcisi arasında herhangi bir fark olmalı? Ve bunu nasıl düzeltirim?
DÜZENLEME: Başka bir ipucu: Biraz daha ayıklama tablolara koyduktan sonra, ben filterContext.HttpContext.User.Identity
doğru Air arama yaparken ayarlı değil bulduk - Name
mülkiyet dışarı boş geliyor! Oturum Kimliği doğru, çerez kimliği doğru - ancak User.Identity
ayarlanmamış. Bunun neden olabileceği hakkında bir fikrin var mı?
Amazing - "" ''etiketine' cookieless = "UseCookies" 'ekledim ve şimdi çalışıyor! Sen dahi, sen! :) –
Yay! Teşekkürler G-d! ... ekip çalışmasıydı, harika bir çalışma Shaul! Doğru yönde düşünmemize yardımcı olduğu için teşekkürler @vnuk! – davidkomer