닷넷관련/ASP.NET MVC 🍕
asp.net identity 의 쿠키 (cookie) , session 활용하여 강제 삭제하기(delete)
재우니
2021. 5. 6. 15:50
asp.net identity 는 cookie 방식으로 운영됩니다. 그래서 iis 재시작해도 끊어지지 않고 계속 인증이 해지되지 않고 유지 되어 사용할 수 있습니다. 만약에 재시작이나 패치 후 강제로 끊어지게 할려면 강제 로그아웃을 해서 쿠키를 삭제해야 하는데요. 이는 session 을 활용하여 간단하게 아래와 같이 filter 를 만들어 두어서 global 전역에 반영해 두면 됩니다.
아래 코드엔 없지만, 인증 ok~ 되면 Session["Username"] = "값"; 을 넣어 두시기 바랍니다.
public class SessionHandler : ActionFilterAttribute
{
private ApplicationUserManager _userManager;
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.Current.GetOwinContext().Authentication;
}
}
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
public IIdentity UserIdentity
{
get { return System.Web.HttpContext.Current.User.Identity; }
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!string.IsNullOrWhiteSpace(UserIdentity.GetUserId()))
{
if (System.Web.HttpContext.Current.Session["Username"] == null)
{
AuthenticationManager.SignOut();
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "action", "Index" },
{ "controller", "Home" }
});
}
}
}
}
Global.asax 파일에서 다음 코드를 추가 합니다.
GlobalFilters.Filters.Add(new SessionHandler());
참고 사이트
www.javaer101.com/en/article/15454064.html