1

Я - страшный новичок в системе идентификации asp.net. Имейте опыт работы с простым провайдером членства и т. Д.идентификатор asp.net аутентификация по ссылке/url asp.net mvc 5

Я хочу, чтобы пользователь был аутентифицирован с помощью специального URL-адреса и токена с ним. как: http://www.website.com/urlAuth/

Пользователь прибудет это письмо, и я хочу, чтобы пользователь для входа/аутентификации с этим URL

маркер активен в течение определенного времени и имеет учетную запись пользователя ANDS некоторых действия, приложенные к нему.

Я не могу сказать, как получить аутентификацию пользователя без пароля. Я исследовал сценарий имперсации (у меня есть особое воплощение с информацией аутентификации в web.config), но это не твердое решение, я думаю.

Может кто на помощь мне, чтобы направить меня на твердый раствор

Спасибо!

ответ

2

Вам не нужен пароль для аутентификации пользователей в Identity. Просто вам нужно найти соответствующего пользователя на основе токена. Рассмотрим этот простой пример:

public ActionResult UrlAuth(string token) 
{ 
    var userManager=HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
    // imaging you have a custom token manager which return userID form token 
    string userID=_tokenManager.GetUserIDByToken(token); 
    var user = userManager.FindById(userID); 
    if (user != null) 
    { 
     var ident = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie); 

     HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties { IsPersistent = false }, ident); 
     // authentication succeed do what you want 
     return Redirect("Wherever"); 
    } 
    ModelState.AddModelError("", "Invalid username or password"); 
    return View(); 
} 
+0

Привет, Сэм, это выглядит довольно просто! Спасибо за ваш быстрый ответ. Я попробую это завтра! С уважением – user4494221

+1

Если вы говорите о токене, сгенерированном Identity, то я не думаю, что можно вывести, какой у пользователя есть токен, поскольку токены криптографически сгенерированы (или это можно сделать?). Я бы предложил передать userId вместе с токеном, так же, как шаблон по умолчанию работает с сбросом пароля: найти пользователя по идентификатору, проверить токен; если токен правильный, пользователь входа. – trailmax

+1

@trailmax Я предположил менеджера токенов и сгенерировал токены, полностью независимые от Identity. Может быть, сгенерированный токен уникален и сопоставляется с идентификатором пользователя. Или, возможно, идентификатор пользователя уже был встроен в созданные маркеры. Точка этого ответа заключается в том, как аутентифицировать пользователей без пароля, как задавал вопрос. Создание и управление жетонами - другая история. –

Смежные вопросы