2011-04-28 4 views
0

우리는 로그인을 위해 ASP.NET MVC 및 AdMembership 공급자를 사용하고 있으며 다양한 이유 때문에 우리 자신의 "다음 로그인시 암호 변경"기능을 구현해야했습니다.광고 Asp.Net 변경 암호

또한 24 시간마다 하나 이상의 변경을 허용하지 않아도됩니다. 그래서 그것은 광고에서 그런 식으로 설정됩니다.

비밀번호를 기본값으로 재설정 할 때 한 가지 요구 사항을 무시하면 24 시간 이전에도 학생이 다음 로그온시 비밀번호를 변경해야합니다.

여기에 내 찌르다. 기본적으로 PwdLastSet 속성을 암호를 재설정 한 후 24 시간이 넘은 값으로 변경하려고합니다.

if (bSetToDefault) 
    { 
     var adDate     = userToActOn.ADEntry.Properties[ "PwdLastSet" ][ 0 ]; 
     DateTime passwordLastSet = DateTime.FromFileTime((Int64) adDate); 
     passwordLastSet    = System.DateTime.Now.AddHours(-25); 
     long filetime    = passwordLastSet.ToFileTimeUtc(); 
     userToActOn.ADEntry.Properties[ "PwdLastSet" ][ 0 ] = filetime; 
    } 

그러나 사용자 비밀번호가 변경된 경우에도 계속 null이 반환됩니다.

누구나 힌트 나 제안 사항이 있으십니까? 나는 틀린 장소를보고 있는가?

답변

1

hmm이 속성은 복제되므로 항상 사용 가능해야합니다. 그 때문에 64 비트 날짜

http://www.rlmueller.net/PwdLastChanged.htm

그것 가능하고 변환을 수행하지 : 가 나타나 있는지 확인하기 위해 명령 줄 스크립트를 시도? 스크립트를 사용해보고 제대로 작동하는지 확인하십시오. 그렇다면 날짜 변환을 위해 Integer8Date 프로 시저를 살펴보십시오.

+0

그걸 출력했는데 거기에 코드를 써서 가져 왔지만 어떻게 설정합니까? 감사. –

+0

당신은 할 수 없습니다 - 당신은 단지 0 (만료되었습니다) 또는 -1 (지금 당장 넥타이를 다시 설정)에만 설정할 수 있습니다 –

0

System.DirectoryServices.AccountManagement를 사용하는 경우 사용자 주체가 암호를 즉시 만료시키기위한 노출 된 방법이 있습니다. 따라서 oUserPrincipal.ExpirePasswordNow();처럼 사용하는 것이 더 쉬울 것입니다. 자세한 사용 방법은 this article을 참조하십시오.

+0

내가 그렇게하면 그들은 전혀 로그인 할 수 없습니다. –

+0

정말입니까? 이 방법은 암호가 만료되고 로그인 할 때 변경을 요청합니다. MS 문서에서 "이 계정의 암호가 만료되면 다음 로그온시 사용자가 암호를 변경해야합니다"라고 정의됩니다. – Raymund

+0

내가 사용하고있는 컨트롤은 로그인하기 전에 비밀번호 변경을 지원하지 않습니다. 이유를 기억하지 못합니다. 시간이 지났기 때문에 시간이 지났습니다.하지만 작동시키지 못했습니다. 그것은 asp.net 로그온 컨트롤의 설정을 HTML로 여러 컨트롤로 풀어 놓았습니다. 변경 패스워드 컨트롤은 로그인하지 않았다면하지 않았다. –