2017-01-21 18 views
0

인증을 위해 내장 된 ASP .NET MVC 템플릿을 사용하고 있습니다. 일부 사용자 정의 역할의 경우 새 등록 사용자 코드를 다른 페이지에 복사하고 다음과 같은 방법으로 데이터베이스에 저장했습니다.오류 : 입력에 기본이 아닌 64 자, 2자를 초과하는 패딩 문자가 포함되었습니다.

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 
    var user = await UserManager.FindByNameAsync(model.Email); 

    // Session["UserName"] = model.Email; 
    // This doesn't count login failures towards account lockout 
    // To enable password failures to trigger account lockout, change to shouldLockout: true 
    var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
} 

을 다음 두 암호를 저장하고 암호 등 이메일하지만 일반 텍스트로 myCode 저장되고 템플릿 코드는 암호화 된 형식으로 패스를 저장하는 것 같은

public void adduser(AdduserModel role){ 
    ApplicationUser appUser = new ApplicationUser() { Email = role.Email, PasswordHash = role.Password, UserName = role.Email, EmailConfirmed = true }; 
    var manager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
    var response = manager.Create(appUser); 
} 

그리고 템플릿 AccountController에

보인다.

로그인하려고하면 템플릿 등록 사용자가 제대로 수행하고 로그인했지만 내 코드에서 다음 오류가 발생합니다.

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters.

어떻게 해결할 수 있습니까?

+0

인증 된 사용자의 역할을 설정하고 [Authorize (Roles = "Admin")]과 같은 동작으로 꾸미려고 했습니까? – LKC

+0

예. 시도했지만 몇 가지 잘못 될 수 없습니다. 간략하게 설명 할 수 있습니까? –

+0

내장 된 인증 및 권한 부여를 사용하여 asp.net 템플릿을 사용하지 않으려는 경우 사용자 지정 역할 및 인증에 대한 몇 가지 기사가 있습니다. http://www.dotnettricks.com/learn/mvc/custom-authentication -and-authorization-in-aspnet-mvc https://www.codeproject.com/Articles/578374/AplusBeginner-splusTutorialplusonplusCustomplusF – LKC

답변

0

나는 정의를있는 코드 영역의 확실하지 않다, 당신이 사용하는 템플릿/asp.net 정체성의 버전,하지만 당신은 표준 UserManager를 사용하는 경우, 시도 :

ApplicationUser appUser = new ApplicationUser() { Email = role.Email, UserName = role.Email, EmailConfirmed = true }; 

var manager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 

var response = manager.Create(appUser, role.password); 

UserManager가 암호화를 처리해야하므로

manager.Create을 호출 할 때 일반 텍스트 암호를 전달하고 첫 번째 줄 (ApplicationUser) 만들기에 포함하지 마십시오.