asp.net – 虽然会话丢失,但Owin仍会对用户进行身份验证
发布时间:2020-12-16 09:54:13 所属栏目:asp.Net 来源:网络整理
导读:我有一个带有OWIN身份验证的ASP.NET MVC 5网站.每个用户在底层数据库中都有不同的凭据,该凭据还用于通过自定义UserManager对用户进行身份验证.我在UserManager.FindAsync返回之前将用户名/密码存储在会话状态,因为应用程序需要在同一用户的任何后续请求中使
我有一个带有OWIN身份验证的ASP.NET MVC 5网站.每个用户在底层数据库中都有不同的凭据,该凭据还用于通过自定义UserManager对用户进行身份验证.我在UserManager.FindAsync返回之前将用户名/密码存储在会话状态,因为应用程序需要在同一用户的任何后续请求中使用它们进行数据库访问.
会话丢失(例如AppDomain回收)时,凭据将丢失.但Owin可能会根据浏览器发送的cookie对用户进行身份验证.我最终得到的是一个经过身份验证的用户…没有会话,因此没有数据库凭据. 重现此行为的最简单方法是使用单个用户帐户身份验证创建新的ASP.NET MVC 5应用程序,并在AccountController.SignInAsync方法的末尾添加一些会话数据. private async Task SignInAsync(ApplicationUser user,bool isPersistent) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); var identity = await UserManager.CreateIdentityAsync(user,DefaultAuthenticationTypes.ApplicationCookie); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent },identity); HttpContext.Session["Data"] = "Data"; } 然后,尝试在任何控制器中检索此信息. public ActionResult About() { ViewBag.Message = Session["Data"]; return View(); } 用户登录后将显示数据.但是,如果您保持浏览器打开(对于cookie),重新启动开发服务器并刷新页面,则在数据消失时仍然会对用户进行身份验证. 我知道这种行为并不出乎意料,但是我正在寻找一种可靠且集中的方式来强制在会话过期时强制重定向到登录页面,或者由于任何其他原因而消失. 解决方法
将Cookie过期设置为与会话超时值相同的持续时间.此外,您还需要确保过期类型(滑动或非滑动)相同.使用非滑动过期可能会更好地确保它们同时超时.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 实体框架 – 实体框架验证混淆 – 最大字符串长度为’128′
- asp.net-mvc-3 – 如何在ASP.NET MVC3控制器中访问autofac容
- 比较自托管:WCF与HttpListener
- asp.net-mvc-3 – 如何在Asp.Net MVC中显示DisplayFormat属
- asp.net-mvc – 死简单的ASP.NET MVC 5密码保护?
- KindEditor编辑器在ASP.NET中的使用
- asp.net – 操作无法完成. FORMATETC结构无效
- asp.net – 有没有一个原因,cshtml不受欢迎
- asp.net-web-api – 使用自定义授权测试异步Web api方法
- asp.net – 解决大型RewriteMap配置部分
推荐文章
站长推荐
- asp.net-mvc-2 – 在MVC中实现自定义标识和IPrin
- asp.net – 如何自定义网站项目的构建?
- asp.net – 如何在.net WebApi2应用程序中使用OA
- asp.net-mvc – 如何在使用类型化视图时在Action
- asp.net-mvc – Facebook Real-time Updates不发
- asp.net – VS2010中新的asp“showat”属性要求不
- ASP.NET DataTable与Json互转源码
- asp.net – Visual Studio总是打开网站而不是编辑
- asp.net-mvc – ASP .NET MVC正确的UserControl架
- asp.net – 用于检索大量二进制图像的.ashx处理程
热点阅读