0

我是Microsoft.AspNet.Identity的新手。我有一个网址令牌:Microsoft.AspNet.Identity MVC如何配置系统自动使用令牌登录但无密码

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

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

我想:当我将这个url-token发送给某人,当他们点击它时会进入我的页面,系统会自动从url获取该令牌,并与数据库中的用户进行身份验证。

如果有效然后自动登录到我的系统,否则进入登录页面。

我认为它需要在startup.auth或IdentityConfig上配置一些东西,但我不知道它是如何实现的。请引导我,因为我是身份新手。

+0

如果用户没有密码,登录页面有什么好处? –

+0

为什么不使用标识的常规注册流程?注册一个用户,发送一个链接激活给用户。用户点击链接激活并登录。 –

+0

请理解,这只是一个客人。非会员。我想在他们邀请我参加活动时向他们展示一个页面。 –

回答

0

其实你在暗示的是使用url登录。您使用一个永远不会更改或过期的标记。这是不安全的。只要用户存在,知道url的任何人都可以访问资源。所以基本上你绕开了AspNet Identity的目的:识别用户。

您当然不希望仅基于此URL登录用户,冒着暴露的风险超过您的预期。

如果您查看注册流程,您会看到您可以发送电子邮件验证码。但是您还会看到,ConfirmEmail方法具有“AllowAnonymous”属性,并且用户以后未登录。这只是验证电子邮件。

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

您也可以实现您发送一个代码(一次性密码)的电子邮件中点击该链接后什么,所以用户在签约之前把输入验证码。

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

+0

我想我只会允许令牌工作一段时间。 你说的是真的,我喜欢。 –