问题标签 [asp.net-identity-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
790 浏览

c# - Asp.Net 5 / Identity 3:在 IdentityDbContext 实现中缓存声明

在寻找一种能够通过管理控制器为发出请求的用户以外的用户分配和撤销角色的方法时,我实现了一个自定义 IAuthorizeFilter 来检查存储为声明的 Guid 标记是否与UserClaims 的 Entity Framework 7 Code First Identity 表。

要点,就是这段代码:

我在我分配的那一行遇到了问题var stampFromDb,它可以通过以下方式更具可读性:

但是,这给了我缓存(与来自 User.Identity 的实际声明相同的值)结果,我找不到任何关于此的文档。我最好的猜测是错误就在我身边,但我以前从未遇到过这样的问题。这是我第一次使用 Asp.Net 5 和 EF7。我正在使用到 SQL Server 12.0.2000 的默认连接 (LocalDB)。

这是一项功能吗?如果是,可以将其关闭还是我在某处犯了错误?

0 投票
0 回答
286 浏览

asp.net-core - 使用来自 .Net 4.6 程序集的 Identity Framework 3.0

我正在尝试使用 ASP.Net 5 中的新 Identity Framework 3 (3.0.0-rc1) 从 .Net 4.6 应用程序创建和修改用户和角色。

根据我在搜索答案时可以找到的内容,它应该很简单:
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(destination));

但是 RoleManager 构造函数需要 6 个参数:
public RoleManager(IRoleStore<TRole> store, IEnumerable<IRoleValidator<TRole>> roleValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, ILogger<RoleManager<TRole>> logger, IHttpContextAccessor contextAccessor);

ASP.Net 5 使用 IoC 来提供 UserManager 和 RoleManager,它似乎与服务器的设置密切相关。

如何从 .Net 4.6 程序集中修改 Identity Framework 3 用户和角色?

0 投票
1 回答
267 浏览

asp.net-core - 快捷方式 Microsoft 身份验证

我们正在尝试使用 ASP.NET 5 Web 应用程序模板将 Microsoft 身份验证引入我们的应用程序。

默认模板将用户从登录链接_LoginPartial.cshtml带到登录页面,在该页面中他们选择首选的身份验证提供程序。我们只想接受 Microsoft 身份验证,因此我们希望_LoginPartial.cshtml用户登录。

我已经修改 _LoginPartial.cshtml

<ul class="nav navbar-nav navbar-right"> @*<li><a asp-controller="Account" asp-action="Register">Register</a></li>*@ <li><a asp-controller="Account" asp-action="ExternalLogin">Log in</a></li> </ul>

我还更改了 provider 参数AccountController ExternalLogin

但在我的情况下 ExternalLogin,没有调用和空白页

http://localhost:52711/Account/ExternalLogin被退回。

我究竟做错了什么?

0 投票
1 回答
1702 浏览

asp.net-core - 管理扩展应用程序用户

使用 ASP.NET 5 Web 应用程序模板并ApplicationUser通过添加 BusinessName进行扩展

dbContext 中的 BusinessName 属性

BusinessName 也已添加到 ViewModels/Manage/IndexViewModel.cs

ManageController 索引操作被调用

以及 Views/Manage/Index.cshml

填充 BusinessName 的正确方法是什么?

0 投票
1 回答
621 浏览

c# - 使用 CookieAuthentication 的 ASP.NET 5 Identity 3.0 可扩展性

我将 ASP.NET 5 与 MVC6 一起使用。我正在使用 Identity 3.0,但我需要知道如何使它与许多网络服务器一起使用。

可以将会话存储在其他地方吗?数据库?在 MVC5 中,您在 web.config 中执行此操作,但我在 MVC6 中没有找到有关它的信息。

这是我在 Startup.cs 中的代码

谢谢!!

0 投票
2 回答
8461 浏览

asp.net-core - 将登录重定向到控制器操作

从使用个人用户帐户的 ASP.NET 5 Web 应用程序模板开始,我设法让外部身份验证与 Microsoft 帐户一起使用。当用户单击登录时,他们会像这样被重定向ExternalLoginAccountController

这让他们使用他们的 Microsoft 帐户登录,一切似乎都运行良好。但是如何拦截访问特权操作的直接尝试,[Authorize] 以便将用户重定向到ExternalLogin?可以设置默认操作Startup.cs吗?

编辑 1尝试遵循我CustomAutorizationFilter在 Filters 文件夹中创建的@Yves 的建议。它不检查任何条件

并编辑ConfigureServices如下

当我在本地运行应用程序时,它不再进入主页。它返回一个空白http://localhost:52711/Account/ExternalLogin

显然有很多我不明白的。

编辑2:这是签名ExternalLogin

这就是ExternalLoginASP.Net 5 Web 应用程序模板中的开箱即用方式。

0 投票
0 回答
483 浏览

c# - 现有数据库模式的 Asp.Net Core 自定义 IdentityUser

我继承了一个现有的数据库(带有数据),我想使用 Identity 3.0 及其功能。我无法更改数据库的架构。从我的研究来看,这似乎是可行的,但我需要覆盖很多东西。

我的问题是,我究竟需要覆盖什么才能使用下面的模式?UserStores、RoleStores、UserManager 等。另外,我如何将用户模式映射到 IdentityUser(Id映射到UserIdPasswordHash映射到Password)?

下面是 DB 模式的样子:

在此处输入图像描述

有几件事需要注意,UserId而不是列名Id,并且我需要在密码上实现一个特定的散列算法,以便对用户进行身份验证。

非常感谢如何实现这一点的示例。

0 投票
1 回答
1127 浏览

asp.net - 如何在 PasswordSignInAsync 之前检查 AspNetUser 是否满足条件?

我使用 Microsoft 提出的方式向 AspNetUsers 添加了一个新列:

这意味着管理员必须在注册后确认用户帐户。

默认登录方式是:

但正如我所见,我无法编辑“PasswordSignInAsync”背后的代码。那么,如果管理员未确认用户的帐户,我如何添加另一个将导致此方法返回结果的条件。IsNotAllowed?

我也不知道如何从数据库中获取有关用户的一些数据。我存储授权数据的 DbContext 如下所示:

通常我会使用:

访问一些数据。但是对于 VisualStudio 为我生成的 AspNetUsers 表,我没有任何“c# 类模型”可以放入 DbSet。然后,我如何访问用户数据以判断他的帐户是否由管理员确认?

0 投票
2 回答
323 浏览

asp.net-identity - 如何访问 _Layout 中的会话而不用担心它已经过期

我正在使用 ASP.NET Core 和 Identity 3。

当我登录时,我阅读了当前选择用户的 UI 模板,并在我的_Layout.cshml文件中加载了css基于此模板的模板。

用户可以更改他的主题,我通过控制器将其存储在会话变量中

我没有在每次cshtml加载时都查询数据库,而是将模板放入 Session 变量中,并Layout.cshtml根据模板呈现不同的 css

我想知道如果会话到期会发生什么。

  1. 考虑到我访问了 my_Layout.cshtml中的值,如果它变为 null 并在呈现新页面之前立即从数据库中加载它,无论如何都会捕获它。

  2. 由于我使用 Identity 3,Claims 可能是更好的选择吗?我以前没用过。我上面的示例的代码是什么

  3. 另一个更适合我的方案的选择?

0 投票
6 回答
17050 浏览

asp.net - 如何在 Identity 3.0 中获取当前的 UserId?User.GetUserId 返回 null

我需要获取提出某些请求的用户的 ID。在以前的 Identity 版本中,我可以这样做:

但它似乎不再可用。

还有类似的东西:

但它总是返回 null,即使 User.Identity.IsAuthenticated 为 true 并且 User.Identity.Name 设置正确。

我应该用什么来做到这一点?

编辑:我的身份验证逻辑基于[默认 Visual Studio 2015 模板],到目前为止我的身份没有太大变化,所以如果你想检查它是如何完成的,你可以在我粘贴的 github 链接上简单地看到它。