Ich habe eine Standard AccountController Klasse von ASP.NET MVC5-Projekt. Wenn ich versuche, mich abzumelden, sehe ich einen Fehler coz HttpContext
ist null
. (Ich meine hier HttpContext
.GetOwinContext(). Authentication null ist)Abmelden Benutzer in OWIN ASP.NET MVC5
So kann ich nicht bekommen, wie wir Benutzer abmelden kann, wenn Sitzung endet ...
In global.asax Ich habe haben diese
protected void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 3;
}
protected void Session_End(object sender, EventArgs e)
{
try
{
var accountController = new AccountController();
accountController.SignOut();
}
catch (Exception)
{
}
}
Account
public void SignOut()
{
// Even if I do It does not help coz HttpContext is NULL
_authnManager = HttpContext.GetOwinContext().Authentication;
AuthenticationManager.SignOut();
}
private IAuthenticationManager _authnManager; // Add this private variable
public IAuthenticationManager AuthenticationManager // Modified this from private to public and add the setter
{
get
{
if (_authnManager == null)
_authnManager = HttpContext.GetOwinContext().Authentication;
return _authnManager;
}
set { _authnManager = value; }
}
Startup.Auth.cs hat
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
ExpireTimeSpan = TimeSpan.FromMinutes(3),
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
}
Ja, ich stimme zu. Wir haben diese Methode standardmäßig, aber ich möchte einen Benutzer abmelden und ihn zur Anmeldeseite umleiten. Also brauche ich eine Lösung, um es mit OWIN zu machen. Wie auch immer, danke für deine Meinung! –
@ClarkKent Diese Lösung tut es mit OWIN, ich habe die Antwort bearbeitet, um zu erklären, wie es das macht. Bitte beachten Sie die anstehenden Änderungen. Milan erklärt, warum es einen Fehler gibt, bevor Sie Ihre Benutzer abmelden. – Termato
Nun ... Ijust kommentierte Code innerhalb 'Session_End' und ich habe seltsames Verhalten der Anwendung. Ich setze SessionTimeout 1 min. Wenn ich mich anmelde und nichts mache, funktioniert es gut. Also 1 Minute später, wenn ich die Seiten aktualisiere, loggt es sich aus und leitet zur LOGIN Seite um. Aber wenn während 2-3 Minuten. Ich navigiere innerhalb der Website, es funktioniert nicht. :) –