我是Microsoft.AspNet.Identity的新手。我有一个网址令牌:
http://example.org/news/titlenew?userId=0f8fad5b-d9cb-469f-a165-70867728950e&token=abcxyzabczyieeieusjhjsyuwhjihsihywsuyhskuju
在我的数据库中有用户信息,但没有密码。
我想要这样:当我将此 url 令牌发送给某人时,当他们单击它时将进入我的页面,系统将自动从 url 获取令牌,并与数据库中的用户进行身份验证。
如果有效,则自动登录到我的系统,否则转到登录页面。
我认为它需要在startup.auth或IdentityConfig上配置一些东西,但我不知道它是怎么回事。请指导我,因为我是身份的新手。
实际上,您的建议是使用URL登录。您使用永不更改或过期的令牌。它不安全。只要用户存在,知道 url 的任何人都可以访问该资源。所以基本上你绕过了AspNet Identity的目的:识别用户。
您当然不希望仅基于此 URL 登录用户,并冒着暴露超出您想要的内容的风险。
如果您查看注册流程,您将看到您可以发送电子邮件验证码。但您还将看到ConfirmEmail方法具有属性"允许匿名",并且用户之后未登录。这只是为了验证电子邮件。
在授权用户之前,您需要先标识用户。您可以使用凭据(本地登录),也可以使用外部 ID 提供程序,如 Google 或 Facebook。
您还可以实现一些功能,在单击链接后向电子邮件发送代码(一次性密码),因此用户必须在登录之前输入此代码。
但是,如果只想显示一个不包含敏感信息(仅包含个人信息)的页面,则无需登录用户。您可以创建TitleNew方法(添加"AllowAnonymous"属性),检查 url 中的代码(如在 ConfirmEmail 中),并根据 URL 中的用户 ID 显示包含个人信息的页面。