Authentication 通过链接/url进行asp.net身份验证asp.net mvc 5

Authentication 通过链接/url进行asp.net身份验证asp.net mvc 5,authentication,asp.net-mvc-5,asp.net-identity,remote-login,Authentication,Asp.net Mvc 5,Asp.net Identity,Remote Login,我是asp.net身份框架的新手。有简单会员服务提供商等经验 我想通过使用一个特殊的url和一个令牌对用户进行身份验证。 比如: 一个用户收到一封电子邮件,我想让该用户使用此url登录/验证 令牌在一定时间内处于活动状态,并且有一个用户帐户和一些附加的操作 我无法确定如何在没有密码的情况下对用户进行身份验证。我调查了一个威胁场景(我在web.config中有一个带有身份验证信息的特殊威胁),但我认为这不是一个可靠的解决方案 有人能帮我找到固溶体吗 谢谢大家! 您不需要密码来验证身份中的用户。您只

我是asp.net身份框架的新手。有简单会员服务提供商等经验

我想通过使用一个特殊的url和一个令牌对用户进行身份验证。 比如:

一个用户收到一封电子邮件,我想让该用户使用此url登录/验证

令牌在一定时间内处于活动状态,并且有一个用户帐户和一些附加的操作

我无法确定如何在没有密码的情况下对用户进行身份验证。我调查了一个威胁场景(我在web.config中有一个带有身份验证信息的特殊威胁),但我认为这不是一个可靠的解决方案

有人能帮我找到固溶体吗


谢谢大家!

您不需要密码来验证身份中的用户。您只需要根据令牌查找相关用户。考虑这个简单的例子:

public ActionResult UrlAuth(字符串标记)
{
var userManager=HttpContext.GetOwinContext().GetUserManager();
//您有一个自定义令牌管理器,它返回userID表单令牌
字符串userID=\u tokenManager.GetUserIDByToken(令牌);
var user=userManager.FindById(userID);
如果(用户!=null)
{
var ident=userManager.CreateIdentity(用户,DefaultAuthenticationTypes.ApplicationOkie);
HttpContext.GetOwinContext().Authentication.SignIn(新的AuthenticationProperties{IsPersistent=false},ident);
//你想干什么就干什么
返回重定向(“无论何处”);
}
AddModelError(“,“无效的用户名或密码”);
返回视图();
}

嗨,山姆,这看起来很简单!谢谢你的快速回复。我明天就试试!kind Regard如果您谈论的是由Identity生成的令牌,那么我认为不可能推断出什么用户拥有什么令牌,因为令牌是通过密码生成的(或者可以这样做吗?)。我建议在传递令牌的同时传递一个userId,就像默认模板使用密码重置一样:通过传递的ID查找用户,验证令牌;如果令牌正确,请登录用户。@trailmax我假设令牌管理器和生成的令牌完全独立于标识。可能生成的令牌是唯一的并映射到用户id。或者可能用户id已经嵌入到生成的令牌中。这个答案的要点是如何像提问者所问的那个样,在并没有密码的情况下对用户进行身份验证。生成和管理代币是另一回事。嗨,我只是想让你知道这个解决方案对我有效!谢谢大家的回答