آقای نصیری در آخرین سوال گفتید که باید از UpdateSecurityStampAsync استفاده بشه. من تو برنامم ، بر اساس هر Application_AuthenticateRequest میام چک میکنم که اگر کاربر حذف یا قفل یا ... بود به صورت خودکار Signout بشه. با توجه به نکته امنیتی که که شما گفتید باید اینجا هم از UpdateSecurityStampAsync استفاده بشه ، من به این صورت استفاده کردم :
public class MvcApplication : HttpApplication { public MvcApplication() { var wrapper = new EventHandlerTaskAsyncHelper(AuthenticateRequest); AddOnAuthenticateRequestAsync(wrapper.BeginEventHandler, wrapper.EndEventHandler); } private async Task AuthenticateRequest(object sender, EventArgs e) { if (Context.User == null) return; //bla bla if (هرچیزی که مجاز نباشد) { var authenticationManager = ProjectObjectFactory.Container.GetInstance<IAuthenticationManager>(); authenticationManager.SignOut ( DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.ApplicationCookie ); FormsAuthentication.SignOut(); await userService.UpdateSecurityStampAsync(userId); } } }
در عمل چک کردم جواب داد ، البته مجبور بودم از یک EventHandlerTaskAsyncHelper استفاده کنم چون نمیشد تو خود متد Application_AuthenticateRequest متدهای Async تعریف کرد.
سوال من اینه ، آیا اصلا نیاز هست در اینجا هم security stamp رو آپدیت کنیم ؟ یا اصلا این روشی که من رفتم از نظر امنیتی درست هست یا خیر.
با تشکر