c# - 指定 B2C 策略(在 C# 中)的顺序是否重要?
问题描述
我正在将 B2C 集成到现有的 MVC Web 应用程序中。我已将以下代码部分以及 CreateOptionsFromPolicy 的代码添加到 Startup.Auth.cs 文件中:
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignUpSignInPolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(EditProfilePolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(PasswordResetPolicyId));
每当我单击指定要使用的策略是 SignUpSignIn 策略的登录链接时,这会将我定向到 B2C 中的该策略。
public void SignIn()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, Startup.SignUpSignInPolicyId);
}
}
但是,如果我打开网站的 url,要求用户在未通过身份验证时进行身份验证,那么我将被定向到 PasswordReset 策略。
当我更改策略的顺序以使 SignUpSignIn 一个是 Startup.Auth.cs 中三个中的最后一个时,然后当我在未通过身份验证时单击同一链接时,我会根据需要定向到 SignUpSignIn 策略.
我的问题是,在 StartUp.Auth.cs 文件中指定这些策略的顺序是否重要?我在任何地方都没有发现任何文件表明情况如此。
或者,当当前没有经过身份验证的用户时,我是否可以在某个地方为所有/每个需要身份验证的操作指定使用哪个策略?
解决方案
也许它与顺序无关,您可以尝试放在app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(EditProfilePolicyId));
最后并测试,因为当您打开需要用户身份验证的网站的 url 时,您似乎被定向到最后一个三政策。对不起,我没有足够的声誉,所以我不能发表评论。如果我有任何进一步的发现,我会更新我的答案。
推荐阅读
- android-studio - Android Studio 最新版本 4.0 上缺少底部栏的运行选项卡
- entity-framework-core - 当实体主键有值转换时,EF Core 在实体更新中忽略拥有的实体列
- c# - 访问 switch case 语句中的变量
- c# - 将字符串列表与 webelements 列表进行比较
- android - 检测拍摄的图像亮度/暗度级别 - 使用 Android CameraX
- java - 如何在自动化中为长硒脚本保持会话活动
- c# - 如何通过接口设置属性而不获取编译器警告
- r - map() 遍历数据框的列
- vba - VBA 中的列表数组
- python - 如何访问在scrapy中通过-s传递的命令行参数?