OnValidateIdentity 会话为空 - Mvc Owin

2024-04-30

目前,我在 OnValidateIdentity 中访问 Session 时遇到问题 -HttpContext.Current.Session一片空白。怎么了?我的申请如下:

  • 我有 2 个项目:Mvc 与 WebApi

我希望用户在更改密码时注销 - >更改安全标记。 我实现为:Mvc 项目将验证 SecurityStamp 在用户请求时更改。我将从其他 webapi 网站获取 SecurityStamp 。这意味着我的 mvc 无法通过 webapi 直接访问数据库。我必须在授权标头中输入令牌才能从 webapi 获取 securitystamp。但是,我无法从 session 访问令牌,当我成功登录时,我将令牌存储在 Session 中。代码示例:

public void ConfigureAuthentication(IAppBuilder app)
    {            
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            CookieSecure = CookieSecureOption.SameAsRequest,
            LoginPath = new PathString("/Home"),
            LogoutPath = new PathString("/Account/Logout"),
            ExpireTimeSpan = TimeSpan.FromMinutes(30),
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = async ctx =>
                {
                    var claim = ctx.Identity.FindFirst("SecurityStamp");
                    var accessToken = HttpContext.Current.Session["token"].ToString();

                    using (HttpClient httpClient = new HttpClient())
                    {
                        // Used accessToken variable for httpClient
                        // TODO Get security stamp from webapi . Ex :
                        string securityStampWebApi = "demo";
                        if (securityStampWebApi != claim.Value)
                        {
                            ctx.RejectIdentity();
                        }
                    }
                }
            }
        });
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
    }

建议其他实现我可以完成这个案例。


cookie 中间件在 IIS 管道中的身份验证阶段运行,该阶段先于HttpContext或会话状态可用。所以你需要在没有它的情况下工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OnValidateIdentity 会话为空 - Mvc Owin 的相关文章

  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • 为什么软件包更新后出现“找不到方法:'Void System.Web.Http.HttpResponseException..ctor”?

    我有一个 ASP NET MVC 应用程序 它在上次 NuGet 包更新后开始出现异常行为 Web应用程序使用 NET Framework 4 6 1 开发人员计算机是Windows Server 2012 R2 Essentials 我使
  • 限制实体框架中子实体的数量

    底线在前 有没有一种简洁的方法可以限制可以属于实体框架中父级的子实体的数量 我现在使用的是4 3 1 问题 我正在开发一个 ASP NET MVC3 站点 它通过使用实体框架的数据访问层访问数据 我有一个 SearchList 实体 它与搜
  • 如何在使用 ajax 和 JQuery 时加密发布数据?

    服务器端我们可以对用户进行身份验证 但我希望 ajax 或 JQuery 发送数据时数据安全 就像在客户端一样 某人只能看到加密格式的任何调用的参数 那么我该怎么做呢 我在这个网站上看到过这个场景 EDIT 当数据来自服务器时 我们可以忽略
  • 如何使用 Error.cshtml 视图中的过滤器放入 ViewBag 的数据?

    我有一个操作过滤器 负责将一些通用信息放入 ViewBag 中 供共享 Layout cshtml 文件中的所有视图使用 public class ProductInfoFilterAttribute ActionFilterAttribu
  • 如何使用C#在asp.net中下载xml文件

    我正在使用网络应用程序ASP NET 与 MVC3 我是 mvc3 的新手 我的网页上有一个下载按钮 当我要单击下载按钮时 我希望能够打开该 XML 文件 我尝试过一些代码更改动作结果但我没有打开文件 通过使用下面提到的代码 我收到一个下载
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 禁用视图中所需的验证特定字段 ASP.NET MVC 4

    如果有人能给我一些提示 我将不胜感激 我搜索了一段时间 我什至找到了一个帖子 我认为它可以解决我的问题 但它没有 在某些情况下禁用必需的验证属性 https stackoverflow com questions 5367287 disab
  • 在 ASP.NET Core 2.0 Web Api 中返回“原始”json

    AFAIK 在 ASP NET Core Web Api 中返回数据的标准方法是使用IActionResult并提供例如一个OkObject结果 这对于对象来说效果很好 但是如果我以某种方式获得了一个 JSON 字符串 并且我只想将该 JS
  • MVC:如何让控制器渲染从视图启动的部分视图

    在我的 MVC5 项目中 我想在部分视图中创建一个菜单 该菜单是动态的 因为它是根据我的数据库中的内容构建的 因此 我有一个控制器负责创建菜单并将菜单模型返回到我的部分视图 public PartialViewResult GetMenu
  • 将 MVC 站点部署到 IIS 会导致找不到默认共享部分视图

    我有一个可以在本地 IIS 上完美运行的网站 我的所有页面都使用默认的共享部分视图 这称为预期 Layout cshtml 该视图放置在我的共享文件夹中 这可以在这里看到 正如我所期望的那样 这非常有效 不过 我现在发布了我的网站 然后 我
  • ASP Identity CoreGeneratePasswordResetTokenAsync 已过期

    我已经在 NET Core 2 1 中设置了一个 Identity Server 4 项目 一切正常 但是当我使用用户管理器生成重置密码令牌时 令牌在 24 小时后过期 我可以将其更改为 48 小时吗 我发送重置令牌的代码如下所示 var
  • 在操作之外执行异步操作 asp.net mvc

    我希望能够在每个请求上从云数据库加载用户 并使用 asp net mvc 在控制器中的请求上提供该用户 问题是当前框架不支持从操作过滤器执行异步操作 所以 OnActionExecuting OnAuthorization 方法不允许我这样
  • 相对于路径匹配路由

    我想要任何以以下结尾的网址 templates filename 使用路由属性映射到特定控制器 例如 public class TemplateController Controller Route templates templateFi
  • 无法将数据加载到 mvc 4 中的 jTable 中

    好的 我第一次尝试 jTable 我可以加载表 但这对我没有什么好处 因为它不会加载我的任何数据 当我调试程序时 我想要的表中的所有行都存储在我的列表中 因此我很困惑为什么当我运行应用程序时会弹出一个对话框 显示 与服务器通信时发生错误 H
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 一个模型可以通过多个编辑器模板传递吗?

    我尝试使用编辑器模板显示视图模型 该模板在应用基本对象编辑器模板之前将模型包装在字段集中 My view model Mvc3VanillaApplication Models ContactModel using Html BeginFo
  • 使用 RedirectToAction 时如何设置协议?

    我的目标操作需要 https 我已经有一个过滤器 如果请求通过 http 传入 它会重定向到 https 但我更愿意从一开始就通过 https 发送请求 EDIT Darin 给出了一个答案 现在更新为其他内容 他问为什么我无论如何都通过
  • 临时数据持久化

    我一直在与TempData最近面临一个令人困惑的案例 假设TempData在以下操作中创建 public ActionResult MyAction1 myTempData TempData myTempData 预计将在以下 Action
  • 重命名 ASP.NET MVC 项目时出错

    我复制了以前的项目并将其重命名 一旦我成功重命名了所有名称空间并且它构建正确 当我运行该应用程序时 出现以下错误 The following errors occurred while attempting to load the app

随机推荐

  • php 登录curl 代码未按预期工作

    我正在尝试使用 php 中的curl 函数登录到特定页面 请检查下面的代码 我在 banggood com 连接我的电子邮件和密码 然后我想重定向到另一个私人页面 但它无法按预期工作 我没有收到任何错误 我被重定向到此页面 https ww
  • 如何将一个数表示为4个素数之和?

    这是问题所在 四个素数的和 http acm uva es p v101 10168 html 指出 输入的每一行包含一个整数 N N 输入示例 24 36 46 示例输出 3 11 3 73 7 13 1311 11 17 7 我第一眼就
  • 为什么更新的状态没有反映在事件侦听器中:React Native、Hooks

    我正在使用钩子来更新状态 在我的代码中 我有一个 AppState 事件侦听器 每当它触发时 我都会更新appState using 设置应用程序状态 但是事件监听器内的 appState 没有改变 但该值正在侦听器外部更新 谁能解释为什么
  • 快速会话未保存到 iPad

    我试图在用户登录时保存会话变量 这在计算机上有效 但是当我在电脑上尝试时iPad using Safari or Chrome它不会保存 这是我设置会话的地方 app set trust proxy 1 app use session se
  • 如何在 Eclipse 中使用 ssh 隧道设置 Subversion?

    我有一个远程服务器 在非标准 ssh 端口上托管我的 subversion 存储库 我想使用 Eclipse 的 subclipse 插件作为客户端来访问 SVN 存储库 我可以使用 svn specialssh 来访问存储库 其中spec
  • FBSessionDelegate 方法未触发

    我正在尝试实施最新的 Facebook Connect SDK 但遇到了一些麻烦 由于某种原因 委托回调FBSessionDelegate协议没有被解雇 我已按照 git Facebook 页面上的说明进行操作 并尝试模仿 Facebook
  • 为什么Jboss比Tomcat“更好”? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在开始一个新的应用程序开发 应用程序架构师坚持要求我们使用JBoss5因为它 更好 有谁对 更好 有更广泛的定义 如果是这样的话 我有使
  • 使用 AJAX (jQuery) 加载日期在 div 内无限滚动

    我一直试图通过几个问题来解决这个问题 找出不同的部件 然后组装它们 但现在我放弃了 我正在尝试做的事情 用户在页面上单击按钮 然后使用 jQuery ajax 将内容列表加载到 div 中 当他或她滚动到 div 底部时 加载更多内容 正如
  • QOpenGLFunctions 缺少重要的 OpenGL 函数

    QOpenGLFunctions 似乎缺少重要的函数 例如 glInvalidateFramebuffer 和 glMapBuffer 据我了解 QOpenGLFunctions 加载桌面 OpenGL 函数和 ES 函数的交集 如果是这样
  • 在 R 中的异常处理中赋值

    while bo 10 x tryCatch getURLContent Site verbose F curl handle error function e cat ERROR1 e message n Sys sleep 1 prin
  • 如何使该月的日期按照每天打印(例如:Su Mo Tu We...等)?

    我有一个包含数字 1 31 的大字符串 我怎样才能将月份的名称居中 My code class Month attr reader month year def initialize month year month month year
  • Java旋转非方形JPanel组件

    由于操作系统限制 我正在尝试旋转填充有文本标签的 GridLayout 以模拟纵向视图 它们所在的 JPanel 不是方形的 因此当旋转 90 度时 标签会根据 JPanel 的尺寸被切断 是否可以根据旋转调整布局大小以仍然适合 JPane
  • Java 中的原始数组如何与 new for every 循环一起使用?

    我知道 new for every 循环适用于 Iterable 和数组 但我不知道使用数组时幕后的情况 谁能帮助我理解这一点 提前致谢 int number new int 10 for int i number 该循环相当于 for i
  • 在elasticsearch结果中显示不匹配的单词

    我想显示返回文档的多单词查询不匹配哪些单词 是否有查询类型或参数来实现此目的 通常 此类不匹配的单词会以删除线字体显示给用户 我得到答案后的示例查询 POST posts search query bool should match nam
  • 查询 MongoDB 以匹配数组中的第一项

    我知道 in运算符 它似乎搜索数组中是否存在某个项目 但我只想在该项目位于数组中的第一个位置时找到匹配项 例如 id ObjectId 0 imgs http foo jpg http bar jpg http moo jpg id Obj
  • 在 Bourne Shell 中从变量中删除换行符

    在 bourne shell 中我有以下内容 VALUES some command that returns multiple line values echo VALUES 好像 ONE TWO THREE FOUR 我希望它看起来像
  • 使用 sed 和 pstree 显示正在使用的终端类型

    我一直在尝试仅显示用作名称的终端类型 例如 如果我使用 konsole 它会显示 konsole 到目前为止我一直在使用这个命令 pstree A s 输出这个 systemd konsole bash pstree 我有以下内容可以从该行
  • 如何在php中重写url?

    我有一些关于在 php 中重写 url 的问题要问 1 www test com index php name 123 至 www test com 123 2 www test com folder1 index php name 123
  • 运行线程时我的 Try Catch 块应该在哪里?

    就拿这个话题来说吧 Thread thread new Thread delegate Code thread Start 应该是在thread Start 或里面 Thread thread new Thread delegate try
  • OnValidateIdentity 会话为空 - Mvc Owin

    目前 我在 OnValidateIdentity 中访问 Session 时遇到问题 HttpContext Current Session一片空白 怎么了 我的申请如下 我有 2 个项目 Mvc 与 WebApi 我希望用户在更改密码时注