管理手动 URL 导航上的用户身份验证状态

2023-12-28

我将 Angular2 与 ASP.NET Core MVC 结合使用,并且管理手动 URL 导航工作正常,服务器正在使用 Angular2 成功加载我的主页视图。

在用户身份验证上,我设置一个会话变量,如下所示:

HttpHelper.HttpContext.Session.SetString("isLoggedIn", true.ToString() );

我想要的是,在用户进入应用程序后,如果他想通过手动导航来加载特定路由,我希望我的服务调用我的 ASP 控制器来检查用户是否已经通过身份验证,以便我的警卫允许路由。相反,守卫默认设置为 false,我显然会被重定向到我的登录页面。

这是我的 ASP 控制器方法,我想调用它来更新 auth.service 中的 IsLoggedIn 值:

[HttpGet]
public IActionResult IsConnectedState()
{
    if (!String.IsNullOrWhiteSpace(HttpHelper.HttpContext.Session.GetString("isLoggedIn")))
        return Ok(true);
    else
        return Ok(false);
}

这样我的 AuthenticationGuard 可以调用 AuthenticationService 来更新管理已验证状态的布尔值:

alert(this.authService.isLoggedIn);
if (!this.authService.isLoggedIn) {
    this.authService.setupLoggedInState().subscribe(() => { });
}

使用以下代码更新我的 auth.service 中的布尔值:

setupLoggedInState() {
    alert("Setting Up");

    // Setting up the Http call 
    let lControllerAction: string = "/IsConnectedState";
    let lControllerFullURL: string = this.controllerURL + lControllerAction;
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    // Call my ASP Controller IsConnectedState() method
    return this.http.get(lControllerFullURL, options)
        .map((res: any) => {
            // Réponse reçue du WebService
            let data = res.json();
            alert(data);
            if (data == true) {
                this.isLoggedIn = true;
            }
        }
        ).catch(this.handleError);
}

当我进行身份验证,然后手动导航到 URL 时,我的守卫告诉我布尔值确实设置为“false”,并且当我的服务尝试调用 http.get 时,我也会得到“Setting Up”。 它似乎在方法中间出现错误,因为我从未到达在 ASP 控制器中设置的断点。我收到以下我不明白的错误:

"platform-browser.umd.js:937 EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property 'toString' of null"

难道是因为我没有在 auth.guard 中的正确时刻调用该服务?我所有其他人都打电话,例如使用 http.post 进行身份验证,没有任何问题,所以我真的不明白问题来自哪里......

任何帮助将不胜感激。


有一个已知缺陷 https://github.com/angular/angular/issues/10612在 Angular 2 RC5 中,当您执行以下操作时会导致此错误get并提供'Content-Type': 'application/json' header.

对于临时解决方法,请将空字符串添加到body根据您的要求选择属性:

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

管理手动 URL 导航上的用户身份验证状态 的相关文章

  • Angular 7 routerLink 指令警告“导航在 Angular 区域外触发”

    我正在努力使用 Angular 框架来让我的应用程序顺利运行 但我无法解决路由问题 我有顶级水平AppComponent and app routing module ts通过我的自定义管理导航SlideMenuComponent 我的简化
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web
  • Angular 2如何将子组件中的方法发送到父组件

    我试图从子组件中删除输入字段 它是通过 Output将激活方法的信息delete 在父组件中 先感谢您 您可以使用以下方法来完成此操作EventEmitter and Output 在下面的代码片段中 您可以调用passDataToPare
  • 错误::预期有间谍,但未定义

    我收到预期的 Spy 错误 但在我的 Angular 10 测试中未定义 我正在使用 Jasmine 和 Karma 我已将 SpreadsheetService 服务模拟为mockSpreadSheetService 我正在调用它的方法
  • 在 ASP.NET MVC 中使用 MySQL 的 AccountController

    在 Visual Studio 中创建默认的 ASP NET MVC 项目会设置一个可以在其中注册用户的基本项目 我将如何继续更改它以使用 MySQL 服务器而不是 SQLServer 现在可以使用了 安装最新的 Connector NET
  • JWT在浏览器中存储在哪里?如何防范CSRF?

    我知道基于 cookie 的身份验证 可以应用 SSL 和 HttpOnly 标志来保护基于 cookie 的身份验证免受 MITM 和 XSS 的影响 然而 需要采取更多特殊措施来保护其免受 CSRF 的影响 它们只是有点复杂 参考 ht
  • 需要在 Visual Studio 2017 中验证 Angular4 和 Angular2

    我已将源代码从 Angularjs 2 升级到 Angularjs 4 我正在使用 Visual Studio 2017 和 ASP NET MVC Core 我现在想验证我使用的是更新版本 4 还是以前的版本 2 这是我的 package
  • ASP.NET Core 2.0禁用自动质询

    将我的 ASP NET Core 项目升级到 2 0 后 尝试访问受保护端点不再返回 401 而是重定向到 不存在的 端点以尝试让用户进行身份验证 应用程序所需的行为只是返回 401 以前我会设置AutomaticChallenge fal
  • 通过 Angular 2 中的输入装饰器使用多个属性

    我有一个通过其选择器接收两个输入的组件 但这可以扩展到任意数量的输入和任何组件 因此 为了消耗组件本身的多个属性 Input 装饰器不允许我使用多个属性 因此作为解决方法 我对两个输入属性使用了两个装饰器 但我认为这不是解决这种情况的唯一方
  • 如何在全局配置文件中配置 ngx-logger 的记录器级别

    我最近包括了ngx logger对于我在应用程序中实现记录器级别的项目 我已将记录器级别硬编码为app module ts在配置内ngx logger但我需要在一些全局配置文件中实现这一点 我遵循了教程here https medium c
  • Rxjs 可观察等待直到满足某些条件

    我有以下重试逻辑来重试操作 对于单个请求来说它工作得很好 对于多个正在进行的请求 我想在重试之前等待现有的重试逻辑完成 handleError errors Observable
  • docker登录 - 存储凭据时出错 - 写入权限错误

    我正在运行一个docker login命令作为 Bamboo 构建作业的一部分 命令文本通过以下方式获得aws ecr get login调用并在子 shell 中执行 该命令失败并显示Error saving credentials er
  • 为什么当尝试使用 $this->data 访问 CakePHP 时,密码字段为空?

    我正在实现一个身份验证组件 这是我的注册页面 create User array action gt login echo form gt input primary email array size gt 32 echo form gt
  • Heroku 上的 Google Vision API 身份验证

    在 Heroku 上验证 Vision API 的最佳 简单方法是什么 在开发中我只使用 vision Google Cloud Vision new project instacult keyfile path to keyfile js
  • 如何使用 SPNEGO 和 CAS 获取 LDAP 用户属性?

    使用 CAS 5 3 x 和 SPNEGO Kerberos 身份验证 如何获取除 SAMAccountName 之外的更多用户属性 当我只使用 标准 LDAP 身份验证处理程序时 我可以放置以下配置 cas authn ldap 0 pr
  • 在asp.net core mvc中,小数的模型绑定不接受千位分隔符

    对于具有decimal属性 如果来自客户端的值包含逗号作为千位分隔符 则模型绑定将失败 我们该如何解决这个问题呢 任何解决方案 全局 控制器 操作本地或模型 属性本地 都是好的 我有一个解决方法 那就是有一个string读取和写入的属性de
  • Angular - Safari 无法正确显示 DOM

    我是 Angular 的新手 使用 Angular 4 我尝试通过在关联的组件类文件中设置属性来更新特定元素 但是 除非我尝试强制重新绘制网页 通过调整窗口大小等 否则页面不会更新 我打开检查器 看到 DOM 已更改 但显示与元素检查器中的
  • Material.Angular.io mat-autocomplete [displayWith] 函数更新范围变量

    我遇到了一个问题 我可以在实例化 mat autocomplete 的组件控制器中访问本地声明的变量 我面临的问题是局部变量被困在这个范围内 我无法更新它们 有关更新 mat autocomplete 范围变量的任何想法或想法 最终我要做的
  • 如何在 ionic2 中 pop() 之后重新加载 ion-page

    我有2页Page1 and Page2 我用过this nav pop 在Page2中 它将弹出Page2 Page1将启用 但我想刷新Page1 先感谢您 您可以将父页面与导航推送一起传递 这样您就可以将父页面作为 navParamter
  • Angular 2在两个组件之间传递数据

    我想在两个组件之间传递数据 但我的问题是 我有两个组件 假设一个是 主 另一个是 模态对话框 在我的主要部分中 我想打开模态对话框并从模态对话框中获取数据 而无需离开我的主要组件 我知道如何使用 Input 但我看不到在我的应用程序中使用它

随机推荐

  • 如何将一个单词拆分为二元组,包括重复的单词?

    我正在尝试将一个单词分成二元组 我正在使用qlcMatrix包 但它只返回不同的二元组 例如 对于单词 detected 它只返回 te 一次 这是我使用的命令 test domain lt c detected library qlcMa
  • 用于存储 jQuery 解析信息的最佳 HTML 属性是什么?

    必须支持 IE6 并且必须验证与 XHTML Strict 1 0 这个很难解释 我使用通用类名来启动关联元素上的插件功能 我还希望将选项与存储在属性中的元素关联 a href url com class popup My Link a 这
  • Git 准备好被推荐给我的老板了吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想向我的老板推荐 Git 作为一个新的源代码控制系统 因为我们还停留在 90 年代的 VSS 哎哟 但是这些工具和第 3 方支持是否足够好 具体来说
  • Angular 4 到 5 更新 ./node_modules/@angular/core/esm5/core.js 中的警告

    我已根据此更新了 Angular 4 至 5tutorial https hackernoon com understanding creating and subscribing to observables in angular 426
  • JobIntentService 与 JobService 有何关系?

    的情况下Service and IntentService主要区别是Service在主线程上运行 同时IntentService不是 当工作完成时后者会自行完成 而我们必须调用stopService or stopSelf 停止一个Serv
  • mysql 获取一天的总工作时间

    我有一个 MySQL 表 其中记录了员工登录和注销时间 这里的in out列中1 代表登录 0 代表注销 id User id Date time in out 1 1 2011 01 20 09 30 03 1 2 1 2011 01 2
  • Mapbox 决定重叠顺序

    I have some features on the map displayed as icons I want to decide which icons should be hidden and which should be dis
  • 不同函数中同名的静态变量如何被系统识别?

    AFAIK 我们可以在不同的函数中有两个同名的静态变量吗 编译器和符号表如何管理它们 他们的身份如何单独管理 编译器不会将静态变量的名称存储在链接符号表中 就链接器而言 它们只是模块的一部分的一些内存 这可能不是在所有情况下 100 正确
  • Spring Security:根据实体不同的身份验证方法

    第一篇文章在这里 希望我做得对 在一个项目中 我们有一个场景 其中有一个具有多个实体的 Web 应用程序 目前 登录是通过默认的 JDBC Spring Security 提供程序进行管理的 工作正常 对于新的需求 我们需要每个实体都可以有
  • 通过 Z3 C++ API 使用浮点运算

    我正在尝试使用 Z3 解决非线性实数问题 我需要 Z3 来生成多个解决方案 在问题域中 精度并不是关键问题 我只需要小数点后一位或两位小数 因此 我需要设置 Z3 不探索实数的所有搜索空间 以最大限度地减少找到多个解决方案的时间 我正在尝试
  • `git rebase` 不更新分支?

    我有这个 master foo v v bar A B C D v E F G 我要这个 master foo v v bar A B C D v E F G so I我认为我需要做 git checkout bar git rebase
  • 如果通常的“t()”不起作用,如何转置 r 中的矩阵?

    我有一个矩阵 我试图在 R 中转置 但 t 函数没有返回正确的答案 如何转置矩阵 gt xx matrix c 3 7 4 8 2 byrow TRUE gt xx 1 2 1 3 7 2 4 8 gt t xx 1 0 7071068 0
  • 如何在Delphi中检查素数

    我想将 1 到 10000 之间的所有素数读入一个动态数组 将所有非素数读入另一个动态数组 然后将素数数组读入richedit1到目前为止我有 procedure primearrays var j k l i m integer k is
  • 如何使用仅在运行时已知的值来初始化对象值?

    假设我正在尝试编写一个简单的井字游戏 它有一个 M x N 字段 游戏只有一个字段 因此它可能应该用单例来表示object 像这样 object Field val height Int 20 val width Int 15 但我不想对高
  • CTE 到底如何发挥作用?

    我碰到这个用于连接行元素的 CTE 解决方案 http www simple talk com sql t sql programming concatenating row values in transact sql 我觉得这太棒了 我
  • 以某种方式在列表中注册我的课程

    我希望能够在一段时间内注册我的课程std map或向量 现在不要考虑重复等 但我不想在类构造函数调用或类的任何函数内注册它 以某种方式在类外部进行注册 所以即使我从未实例化它 我也能够知道它存在 Example Somehow from o
  • 如何让三星智能电视模拟器查看我的应用程序?

    我刚刚开始开发三星智能电视 到目前为止 我的第一步是一个巨大的失败 我正在运行 Linux 并且因为我已经安装并配置了 Eclipse 以进行 Android 开发 所以我尚未成功安装和运行智能电视 SDK 然而 受到鼓励如何在没有 IDE
  • gwt 中的 Window.alert() 事件

    我有一个疑问 如果我们在 gwt 的 Window alert 中按 OK 按钮会发生什么 如果我们按下 确定 按钮 背面是否会发生任何事件 Window alert 是一个阻塞调用 所以点击后OK代码恢复运行 Window alert O
  • 在 WiX 3.6 中设置 WebSite 元素的 AppPool

    我有一个 WiX 安装程序 它设置了几个根 IIS 网站 每个网站都有许多 Web 应用程序 我们为每个根都有一个单独的应用程序池 并将每个 Web 应用程序放入该应用程序池中 不幸的是 我找不到一种方法来确保网站进入其所需的应用程序池 而
  • 管理手动 URL 导航上的用户身份验证状态

    我将 Angular2 与 ASP NET Core MVC 结合使用 并且管理手动 URL 导航工作正常 服务器正在使用 Angular2 成功加载我的主页视图 在用户身份验证上 我设置一个会话变量 如下所示 HttpHelper Htt