Microsoft.AspNet.Identity MVC如何配置系统自动使用token无密码登录

Microsoft.AspNet.Identity MVC how to configure the system to automatically login with token but no password

我是 Microsoft.AspNet.Identity 的新手。我有一个 url-token:

http://example.org/news/titlenew?userId=0f8fad5b-d9cb-469f-a165-70867728950e&token=abcxyzabczyieeieusjhjsyuwhjihsihywsuyhskuju

在我的数据库中有用户信息但没有密码。

我想要的是:当我将这个 url-token 发送给某人时,当他们点击它会来到我的页面时,系统会自动从 url 中获取 token,使用数据库中的用户对其进行身份验证。

如果有效则自动登录到我的系统,否则转到登录页面。

我认为它需要在startup.auth或IdentityConfig配置一些东西,但我不知道它是怎么回事。请指导我,因为我是 Identity 的新手。

实际上您的建议是使用 url 登录。您使用永不更改也不会过期的令牌。这不安全。只要用户存在,任何知道 url 的人都可以访问该资源。所以基本上你绕过了 AspNet Identity 的目的:识别用户。

您当然不希望仅基于此 url 并冒着暴露比您想要的更多信息的风险登录用户。

如果您查看注册流程,您会发现您可以发送电子邮件验证码。但是您还会看到 ConfirmEmail 方法具有属性 'AllowAnonymous' 并且用户之后没有登录。只是为了验证邮箱。

在授权用户之前,您需要先识别用户。您可以使用凭据(本地登录),也可以使用外部 ID 提供商,例如 Google 或 Facebook。

您还可以在单​​击 link 后向电子邮件发送代码(一次性密码),这样用户必须在登录前输入此代码。

但如果您只想显示一个页面,其中不包含敏感信息(只是一条个人消息),则您不需要登录用户。您可以创建 TitleNew 方法(添加 'AllowAnonymous' 属性),检查 url 中的代码(如在 ConfirmEmail 中)并显示带有个人消息的页面,基于 url.

中的用户 ID