2014-12-11 5 views

답변

1

감사를 제공하는 다음 코드를 사용합니다. 제 시나리오는 양식 인증 중에 토큰을 만들어야하므로 동적으로 멤버 자격 공급자를 계획하고 있습니다. 대답을 찾았습니다

private static string GetFbaZoneUrl(SPWeb web) 
{ 
    string providerAndRole = null; 
    SPWebApplication webApp = web.Site.WebApplication; 
    foreach (var zone in webApp.IisSettings.Keys) 
    { 
     var settings = webApp.IisSettings[zone]; 
     var fbaProvider = webApp.IisSettings[zone].FormsClaimsAuthenticationProvider; 

     if (fbaProvider != null) 
     { 
      // We found the zone on the web app where FBA is enabled. 
      // This is the zone whose URL we want. 
      // SPAlternateUrl fbaUrl = webApp.AlternateUrls.GetResponseUrl(zone, false); 
      providerAndRole = fbaProvider.MembershipProvider + "," + fbaProvider.RoleProvider; 
      break; 
     } 
    } 

    return providerAndRole; 
} 

이 코드가 도움이 되었 길 바랍니다.

감사합니다. 라마

0

이 국지적 이름은 다음과 같은 형식이 될 것입니다 (당신은 폼 기반의 계정으로 로그인 한 경우) 현재 사용자 이름을 얻을 CSOM에서, 매우 쉽습니다 :

"i:0#.f|membership|someone.example.com"

"i : 0 # .f | membership | someone.example.com"은 멤버 자격 공급자 이름입니다. javascript substring 함수를 사용하여이 섹션을 가져옵니다.

현재 사용자의 로그인 명을 얻기 위해, 또한 응답을

function GetCurrentUsername() 
 
{ 
 
var ctxt = new SP.ClientContext.get_current(); 
 
this.website = ctxt.get_web(); 
 
this.currentUser = website.get_currentUser(); 
 
ctxt.load(currentUser); 
 
ctxt.executeQueryAsync(Function.createDelegate(this, this.onSucceess), Function.createDelegate(this, this.onFail)); 
 
} 
 

 

 

 
function onSucceess(sender, args) 
 
{ 
 
alert(currentUser.get_loginName()); 
 
} 
 

 

 

 
function onFail(sender, args) 
 
{ 
 
alert('request failed ' + args.get_message() + '\n'+ args.get_stackTrace()); 
 
}
here