Wygląda MK. Odpowiedź nie pozwala na poprawną obsługę odnawiania tokena podczas korzystania z opcji SlidingExpiration
.
Jako rozwiązanie alternatywne, zamiast dostarczać niestandardowego dostawcę plików cookie, wydaje się, że można podać niestandardowego menedżera plików cookie i zdefiniować własne metody dodawania/usuwania pliku cookie.
Aby zachować prostotę w moim przypadku, ponownie używam domyślnego menedżera plików cookie pod maską. (Nie mogę przedłużyć go, jego metody nie są przeciążać.)
Oto kod I skończył z:
using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Infrastructure;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.DataProtection;
using Owin;
public class Startup
{
public void Configuration(IAppBuilder app)
{
var options = new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
SlidingExpiration = true,
CookieManager = new CustomCookieManager()
};
app.UseCookieAuthentication(options);
}
}
public class CustomCookieManager : ICookieManager
{
private readonly ICookieManager ConcreteManager;
public CustomCookieManager()
{
ConcreteManager = new ChunkingCookieManager();
}
string ICookieManager.GetRequestCookie(IOwinContext context, string key)
{
return ConcreteManager.GetRequestCookie(context, key);
}
void ICookieManager.AppendResponseCookie(IOwinContext context, string key, string value, CookieOptions options)
{
SetupDomain(context, options);
ConcreteManager.AppendResponseCookie(context, key, value, options);
}
void ICookieManager.DeleteCookie(IOwinContext context, string key, CookieOptions options)
{
SetupDomain(context, options);
ConcreteManager.DeleteCookie(context, key, options);
}
private void SetupDomain(IOwinContext context, CookieOptions options)
{
// custom logic for assigning something to options.Domain
}
}
Wymieniony kod jest oparty na Owin 3.0.0-beta2-30422-012-dev, może być konieczna modyfikacja, jeśli używasz wcześniejszej wersji. –
Próbowałem tego, ale stwierdziłem, że SignOut przestał działać. jakieś pomysły? –
Czy sieć jest oszukana jak ja. Jeśli nie znajdziesz właściwości 'CookieOptions', ale zamiast tego znajdujesz właściwość' Options', nie próbuj jej używać, sądząc, że w tej odpowiedzi jest literówka. Tak nie jest. Jeśli nie masz właściwości 'CookieOptions', musisz zaktualizować swoje odniesienie do Microsoft.Owin.Security.Cookies.Bezpośrednie zmiany na właściwość 'Options' prowadzą do błędów, ponieważ zmieniają opcje menedżera dla kolejnych żądań, ale nie dla bieżącego! Zmiany w właściwości 'CookieOptions' mają zastosowanie do bieżącego żądania i tylko do niego. –