0

Я хочу аутентифицировать пользователя только с именем пользователя и без пароля. В моем приложении нет данных управления пользователями, и я просто хочу создать Identity с данными пользователя, чтобы я мог использовать его в приложении.Аутентифицировать ПОЛЬЗОВАТЕЛЯ в Asp.net MVC 5 без пароля

Я попытался скопировать метод SingInAsync поместить это до

private async Task InitializeUser() 
    { 
     var user = new ApplicationUser(); 
     user.Id = "abcd"; 
     user.UserName = "abcd"; 

     AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); 
     var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); 
     AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity); 
    } 

Но он говорит мне и ошибки - , что идентификатор пользователя не может быть найден. Есть ли что-то, что я могу просто аутентифицировать пользователя по имени пользователя и назначить Identity с некоторыми подробностями ??

+1

Я полагаю, вы могли бы просто жестко установить один фиктивный пароль для всех - хотя кажется глупым использовать Identity без необходимости аутентификации. – wahwahwah

+0

Спасибо! Мой пользователь уже прошел аутентификацию, так как это приложение работает под IFrame. Но я все же хочу установить личность, чтобы я мог использовать эти данные пользователя через свое приложение. Любые другие идеи? – Prashant

+0

Лучшим решением было бы иметь приложение, работающее в iframe, предоставить некоторую форму учетных данных, показывая, что пользователь прошел аутентификацию ... возможно [oAuth] (http://www.asp.net/aspnet/overview/owin и-катана/Owin-OAuth-20-авторизации-сервер)? – wahwahwah

ответ

1

Не забывайте про пользователя UserManager и создайте ClaimsIdentity.

private async Task InitializeUser() 
{ 
    var user = new ApplicationUser(); 
    user.Id = "abcd"; 
    user.UserName = "abcd"; 

    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 

    var id = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie, ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType); 
    id.AddClaim(new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "ASP.NET Identity", ClaimValueTypes.String)); 
    id.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, user.UserName, ClaimValueTypes.String)); 
    id.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id, ClaimValueTypes.String)); 

    AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, id); 
} 

Возможно, вы захотите немного изменить его, чтобы сделать его более чистым.