blazor 如何检测授权/未授权

2024-06-24

我正在定制AuthenticationStateProvider在 Blazor 应用程序中进行测试。我担心新类不会具有与 AuthenticationStateProvider 类相同的功能,因为我不确定 AuthenticationStateProvider 是如何工作的。下面我发布了我的自定义课程。您能告诉我这是否是覆盖此类的可接受的方式吗?

public class ServerAuthenticationStateProvider : AuthenticationStateProvider
{
    string UserId;
    string Password;
    bool IsAuthenticated = false;

    public void LoadUser(string _UserId, string _Password)
    {
        UserId = _UserId;
        Password = _Password;
    }

    public async Task LoadUserData()
    {
        var securityService = new SharedServiceLogic.Security();
        try
        {
            var passwordCheck = await securityService.ValidatePassword(UserId, Password);
            IsAuthenticated = passwordCheck == true ? true : false;
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex);
        }
    }

    public override async Task<AuthenticationState> GetAuthenticationStateAsync()
    {
        var userService = new UserService();

        var identity = IsAuthenticated
            ? new ClaimsIdentity(await userService.GetClaims(UserId))
            : new ClaimsIdentity();

        var result = new AuthenticationState(new ClaimsPrincipal(identity));
        return result;
    }
}

问题:

blazor 如何检测授权/未授权

Answer:

这是其中之一ClaimsIdentity 的构造函数 https://learn.microsoft.com/en-us/dotnet/api/system.security.claims.claimsidentity.-ctor?view=netframework-4.8#System_Security_Claims_ClaimsIdentity__ctor_System_Collections_Generic_IEnumerable_System_Security_Claims_Claim__System_String_:

public ClaimsIdentity (
 System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, 
 string authenticationType);

To 设置为已验证 https://learn.microsoft.com/en-us/dotnet/api/system.security.claims.claimsidentity.isauthenticated?view=netframework-4.8,只需发送一个值到authenticationType,引用文档:

已验证注意:访问时,将根据 AuthenticationType 属性的值返回 IsAuthenticated 属性的值。

要求IsAuthenticated.

从以下位置查看这段代码:

    var identity = new ClaimsIdentity(new[]
    {
        new Claim(ClaimTypes.Name, "mrfibuli"),
    }, "Fake authentication type");

对于前面的例子,IsAuthenticated将会是真的因为ClaimsIdentity构造函数有"Fake authentication type" for authenticationType范围。

总结

如果你创造了你的身份包括 authenticationType参数表示用户已通过身份验证。如果你创造了你的身份without authenticationType参数,用户未经过身份验证。

    var userService = RequestMyUserService(user, password);

    var identity = userService.IsValidUser
        ? new ClaimsIdentity(
            new[] {new Claim(ClaimTypes.Name, "mrfibuli"),}, 
            "My Custom User Service")  // authenticated
        : new ClaimsIdentity();        // not authenticated

    ...

更多信息请访问基于声明的身份验证 https://andrewlock.net/introduction-to-authentication-with-asp-net-core/#claims-based-authenticationASP.NET Core 身份验证简介。

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

blazor 如何检测授权/未授权 的相关文章

  • 如何重写实体数据模型创建的对象上的 Equals?

    我创建了一个实体数据模型 它从 SQLite 数据库中提取记录 其中一个表是 People 我想重写 person Equals 方法 但我不确定去哪里进行这样的更改 因为 Person 对象是自动生成的 我什至看不到该 autogen 代
  • 以 ISO 8601 格式输出日期

    如何在 C 中获取以下格式的日期 2016 04 26T19 50 48Z include
  • OWIN AuthenticationOptions 在 mvc5 应用程序中运行时更新

    Hi 情况如下 我在 iis 7 上有一个带有 Identity 2 的 MVC 5 应用程序 该应用程序为多个网站提供服务 主机名是某些网站的关键 网站 另一个网站 等等 我决定在我的所有网站上使用谷歌外部登录 每个网站都应该是带有个人
  • 带方括号的 Uri.EscapeUriString

    这是一个奇怪的问题 但让我们看看它会得到什么样的回应 如果我编写一个控制台应用程序 VS 2013 NET 4 5 1 并执行这行代码 Uri EscapeUriString 我明白了 但是 如果我执行同样的事情 嗯 从技术上来说Uri E
  • 使用索引避免迭代器失效,维护干净的接口

    我创建了一个MemoryManager
  • 运行时两个注册之间的简单注入器基于动态上下文的注入

    我有一个使用 Simple Injector 进行命令处理程序注册的中介应用程序 并且注入和处理程序均已设置并完美运行 class DoWashingCommandHandler IRequestHandler
  • 指向指针的指针和指向二维数组的指针之间的区别

    如果我有一个二维数组 B 定义为 int B 2 3 1 3 5 2 4 6 Is int p B与 一样int p 3 B int f B printf d f 1 gives 5作为输出 同时printf d f 给出 1 作为答案 为
  • C# Visual Studio 动态代码片段

    我正在开发一个 WinForms 项目 每天都会执行一些重复性的任务 所以我认为创建代码片段 https msdn microsoft com en us library ms165394 v vs 110 aspx会帮助我 但它仅适用于固
  • 将标准库添加到C++ eclipse项目中

    一个 非常 新手 C 问题 有没有办法自动将标准库添加到 C eclipse 项目中 我安装了 CDT 主要功能插件 您可以手动添加 STL 标头的路径路径和符号 gt 包含选项卡 http help eclipse org galileo
  • ObjectTrackingEnabled 和 linq-to-sql

    I read here http www sidarok com web blog content 2008 05 02 10 tips to improve your linq to sql application performance
  • 命令中带空格的 Windows C 系统调用

    我无法使用名称和参数中的空格进行系统调用 例如 system c program files something example exe c my files example txt 我尝试过各种我知道的方法来逃避 但没有任何效果 我努力了
  • argc 和 argv 在 Windows 中没有用吗?

    在 Linux 中 argc 和 argv 计算终端中的参数 但在 Windows 中 我找不到放置第二个参数的地方 事实上 每次我运行该程序时 它都会创建那个丑陋的黑色窗口 我什至没有机会给出任何争论 那么这两个变量在Windows平台下
  • 嘲笑会员用户

    我目前正在开发一个 asp net mvc 2 应用程序 它使用默认的 SqlMembershipProvider 进行身份验证 我已经实现了一个控制器方法 通过调用读取当前用户的 ProviderUserKeyMembership Get
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 简单的喷射器将具体类型与生活方式结合起来

    我正在寻找一种可以使用指定的生活方式注册具体类型的方法 基本上如下所示 public void SomeFunction Type concrete Lifestyle lifestyle gt container Register con
  • Subsonic 3 ActiveRecord 嵌套选择导致 NotIn 错误?

    我有以下 Subsonic 3 0 查询 其中包含嵌套的 NotIn 查询 public List
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 是否可以在 Eclipse 中为除 Java 之外的 Eclipse 编写插件?

    谁能帮我用c 写一个eclipse插件 weekens 和 celavek 感谢您提供的信息 我正在研究 JNI 并将尝试实现它 celavek 我们必须做什么样的主控 控制 在C 和java接口中处理是否风险更大 我的要求是在 Java
  • 64 位随机生成器种子

    我目前正在运行一个具有 8 个以上管道 线程 的多线程模拟应用程序 这些管道运行非常复杂的代码 该代码取决于种子生成的随机序列 然后该序列被归结为单个 0 1 我希望在将种子从主线程传递到处理管道后 这种 随机处理 具有 100 的确定性

随机推荐

  • 我应该使用监听器还是观察者?

    我的 GUI 中有一个下拉框 它显示另一个类中 ArrayList 的内容 新对象可以添加到 GUI 中其他位置的 ArrayList 中 因此我需要知道它何时更新 以便刷新下拉菜单 据我所知 我的两个选择是扩展 ArrayList 类以允
  • 无法访问 json 对象属性返回未定义

    我正在从 json 对象访问密钥 但它返回未定义 body Hi date 2016 07 29 07 43 00 var a JSON parse JSON stringify r txt console log a body undef
  • 从命令行执行获取 Apache 文档根(无浏览器)

    不确定标题是否正确 如果您想到更好的标题 请编辑 我有一个从命令行调用的 XMLRPC 服务 它使用 Zend 框架 客户端看起来像这样 server new Zend XmlRpc Client http 主机名 path to xmlr
  • 钻石继承和纯虚函数

    想象一下标准的钻石继承 类 A 定义纯虚函数 fx 类 B 定义 fx 的实现 类 C 和 D 对 fx 不执行任何操作 当尝试在类 D 的实例上调用 fx 时 您将收到 模糊函数调用 错误 尽管 fx 只有一种实现 这可以通过B和C以虚拟
  • 通过匹配模式将字符串替换为另一个文本文件中的行

    我有一个带有对应键 gt 值的文件 sort keyFile txt head ENSMUSG00000000001 ENSMUSG00000000001 Gnai3 ENSMUSG00000000003 ENSMUSG0000000000
  • Java 保存和加载程序的状态

    在我的java项目中 我有几个类 java文件 但在Menu类中 存储了所有使用的内容列表 就数据而言 我存储 6 个列表 2 个 ArrayList 和 4 个 HashMap 其中 1 个在 Menu 类中定义 其他在不同的类中 所以我
  • 带参数和返回值的 Task.Factory.StartNew

    尝试调用需要参数的方法以获得结果并传递结果以继续 但我是任务区域的新手 似乎无法找出正确的语法 任何帮助 将不胜感激 Task Factory StartNew gt CheckConflict startDate endDate actI
  • 可以使用 git 项目并在 VS2013 中查看 TFS 工作项吗?

    所以我升级到了VS2013 希望能顺利进行所有开发 不过有一件事确实让我很恼火 我的团队使用 TFS 而我更喜欢 git 因此我使用 git tfs 来桥接两者以进行源代码控制 我们使用 TFS 工作项来跟踪错误和故事等 如果重要的话 我也
  • Windows 8 网格应用程序中的自定义详细信息页面

    我创建了一个简单的 C Windows 8 网格应用程序 如果您不熟悉这种布局 这里有一个简短的解释 Link http blogs msdn com b window 8 avtar archive 2012 09 24 part 1 c
  • 确定 `constexpr` 执行 - 在编译期间还是在运行时?

    有没有办法实现不同的行为constexpr编译阶段和运行时的函数 考虑以下示例 使用来自D static if constexpr int pow int base int exp noexcept static if std evalua
  • Android 接收外语(例如俄语)Json

    伙计们 美好的一天 我正在尝试接收一些JSON它是用俄语写的 可能也必须以中文接收 主要是在全球范围内 所以我必须收到的任何语言信件JSON 问题是当我收到JSON应该看起来像 file path storage paqstorage pa
  • 如何在selenium中检测javascript文件的加载是否通过ajax加载?

    我的主页通过ajax加载另一个页面 其中有javascript文件 我如何检测ajax页面加载是否在selenium中完成 我可以检查加载的元素 但是有些链接在内部页面中的 javascript 文件完全加载之前是不可点击的 我如何确保这些
  • 如何制作 voronoi 树形图? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 I want to make voronoi treemaps for statistics data like newsgraphy h
  • 破译哪个控件触发了事件

    我有一个包含许多图像的应用程序 这些图像看起来都相同并执行类似的任务
  • Microsoft 文件服务器升级后 Azure 应用服务未重新启动

    上周四 1 月 23 日 我们的 Azure 应用服务出现故障 所有部署槽位 使用 诊断和解决问题 调试功能并深入研究 我发现了这个错误 Platform File Server Upgrade Your application was r
  • url 中的“~”波浪号有什么用? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 URL 中的 波形符有什么用 我正在使用 cPanel 并且有包含波浪号的链接 为什么那里有波浪号 当我们购买服务器空间但没有 dns 或不想将其用于
  • 如何使用 RegexKitLite 转义 NSString 中的特殊字符?

    我正在构建一个使用用户输入的字符串的正则表达式 但该字符串可能包含特殊字符 例如 或 我希望将它们视为文字 而不是通过正则表达式中的特殊含义进行解释 我试过这个 NSString word input stringByReplacingOc
  • 列表框未虚拟化

    我有一个未虚拟化的列表框 我显然错过了一些东西 但找不到它 它实际上是一个列表框内的一个列表框 外部列表框有一个 ItemTemplate 其中包含一个 Expander Expander 用于显示一组项目 Expander 的内容是显示项
  • 当 PHP 认为合适时让 apache 处理 404 错误?

    我完全知道如何在 PHP 中创建自定义 404 页面 但是我想知道是否有一种方法可以将控制权交还给 apache 并让它生成正确的 404 页面 发送正确的标头等 当我的逻辑是这样的时候 我正在看一些apache特定的功能 http php
  • blazor 如何检测授权/未授权

    我正在定制AuthenticationStateProvider在 Blazor 应用程序中进行测试 我担心新类不会具有与 AuthenticationStateProvider 类相同的功能 因为我不确定 AuthenticationSt