2013-06-29 1 views
0

내 사무실 구성원에게 메일을 보내는 웹 사이트가 있습니다.웹 서비스에서 Windows 로그인 사용자 이름을 입력하십시오.

이 메일에는 예 버튼이 있습니다. 네의 클릭에

는/I는 웹 서비스를 호출 아무 버튼도, 내 예 아니오 링크처럼 다소 보지 않는다이

이제 사용자가 자신의 시스템이 자신의 전망이 메일을 찾은 다음 열 로그인합니다 내 사무실 직원을 즉
<a href="http://xxxxx/xxxxx/votCatWSer.asmx/takevotingOpt?yesNo=yes&sNo=1">yes</a> 

클릭하세요.

클릭하면 웹 서비스에서 takevotingOpt 메서드가 호출됩니다. 이 메서드에서 나는이 호출이 어느 사용자로부터 왔는지 알고 싶습니다. xyz처럼 데이터베이스에 레코드를 유지할 수 있도록 사용자가 예/아니오로 투표했습니다.

두 내 조직 A의 멤버와 B는 있습니다

A의 창은 loginid는 및

가 B의 창은 loginid는 " BbLoginId"입니다

모두 A와 B가받는

"이 AaLoginId"입니다 위에서 언급 한 링크가있는 메일. 예/아니오 링크를 클릭하면 웹 메소드에서 A의 로그인 ID 즉, "AaLoginId"을 제공해야합니다. 내가 이것을 얻은 후에 A가 예로 투표 한 것처럼 데이터베이스에 항목을 만듭니다.

내 웹 서비스에서 사용자 이름을 얻으려는 시도를했지만 사용하지 마십시오.

Windows 로그인 사용자 명을 얻으려고이 항목을 시도했습니다. 하지만이 브라우저 창을 열고 윈도우 사용자 ID를 요청,

 //string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
     //Uri uri = new Uri("http://tempuri.org/"); 
     //ICredentials credentials = CredentialCache.DefaultCredentials; 
     //NetworkCredential credential = credentials.GetCredential(uri, "Ntlm"); 
     ////userName = credential.UserName; 
     //userName = User.Identity.Name; 
     //userName= System.Threading.Thread.CurrentPrincipal.Identity.Name; 
     //userName = Context.Request.ServerVariables["LOGON_USER"].ToString(); 
     //userName = HttpContext.Current.User.Identity.Name.ToString(); 

나는 지금 내가 (사용자 이름 = User.Identity.Name를) 원하는 것을 내 inetmgr을 시스템에서 인증 갔다 내 호스팅 웹 서비스에 대한 Windows 인증을 사용 가능 그리고 비밀 번호 내가 원하지 않아 그것은 로그인 창없이 데리러한다.

이 문제를 해결하기위한 다른 방법을 제안하거나 제안하십시오.

+0

을 얻기 위해 요청 개체를 볼 수 있어야의 웹 서비스에 대한 및 IIS에서 Windows 인증을 설정해야 내 호스팅 웹을위한 Windows 인증을 사용 가능 서비스는 지금 내가 원하는 것을 수행하지만 브라우저 창을 열어 Windows 사용자 ID와 암호를 묻습니다. 원하지 않는 것은 로그인 창없이 선택해야합니다. –

+0

userid (오른쪽?)로 메일을 보내는 코드가 있으므로 사용자가 클릭 한 URL에 사용자 ID를 포함 시키십시오. ? yesno = yes & userid = AaLoginid – dkackman

+0

@dkackman 관심을 가져 주셔서 감사합니다.하지만 .. 그렇게하면 사용자 A가 메일을 사용자 C에게 전달하면 올바른 기록을 얻지 못할 것입니다. –

답변

0

사용 Environment.UserName

다음은 MSDN의 문서를합니다. http://msdn.microsoft.com/en-us/library/system.environment.username.aspx

편집 - 그것은에 로그인 한 사용자의 목록을 검색하려면 WMI 및 시스템 DLL을 통해를 사용하는 방법을 보여줍니다 Logoff interactive users in Windows from a service

-이 질문/답변을 확인, 모든 사용자가 현재 시스템에 로그인 검색하려면 현재 시스템 (서비스 계정을 포함 할 수도 있고 포함하지 않을 수도 있습니다. 직접 시도하지 않았습니다).

편집 - 통합 보안을 사용하면 달성하려는 목표에 적합하지만 대기업에서는 설정하기가 다소 어려울 수 있습니다. 로그인 프롬프트를 없애기 위해 Internet Explorer는 "인트라넷 영역"에있는 사이트에 대해 자동 인증을하지만 "인터넷 영역"에있는 사이트에 대해서는 자동 인증을하지 않습니다. 웹 서비스 URL이 인트라넷 기반인지 확인하십시오 (예 : http://myserver/). 인터넷 기반이 아닙니다.e http://myserver.mycorp.com/, 사용자가 동일한 도메인 내에 있지 않은 경우 그렇지 않은 경우 사용자가 인트라넷 영역에 "* .mycorp.com"을 추가하게합니다. FireFox는 자동 인증을 위해 특정 사이트가 "신뢰할 수 있어야"하는 유사한 구성을 가지고 있습니다.

+0

감사하지만 "시스템"이 UserName으로 반환됩니다 –

+0

그렇다면 "시스템" 사용자 계정. –

+0

아니요 내 시스템에 내 사용자 ID와 암호로 로그인했습니다. 내 시스템에서 웹 서비스를 호출하면 내 loginid가 표시됩니다. –

1

당신은 당신이 내 inetmgr을 시스템에서 인증 갔다 사용자

+0

당신이 옳습니다. 내 질문에 나는이 접근법을 언급했다. 유일한 문제는 브라우저 창을 열고 사용자 자격 증명을위한 팝업이 표시된다는 것이다. 나는 팝업 창과 브라우저 창을 열고 싶지 않다. 나는 이미 시스템에 로그인 한 상태에서 묻지 않고 사용자 ID를 캡처하는 방법을 원합니다. 나는 너를 혼동하지 않는다. –

+0

사용자가 같은 도메인에 있습니까? 그들은 이미 도메인에 로그온되어 있습니까? 그렇다면 자격 증명 요청을받지 않아야합니다. iis에서 기본 및 다이제스트 인증이 해제되어 있는지 확인하십시오. 웹 구성에서 Windows 인증을 설정 했습니까? 또한 그들은 asmx 또는 svc 파일이 위치한 디렉토리에 액세스 할 수 있습니까? – jfin3204

+0

도메인 부분에 대해 더 자세히 설명해 주실 수 있습니까? 예 기본 및 다이제스트 인증이 iis에서 해제되어 있습니다. 네, 웹 설정에서 윈도우 인증을 설정했습니다. 사용자가 디렉토리에 액세스 할 수있는 방법을 알려주십시오. 모든 사용자는 동일한 회사의 서버이며 동일한 회사의 서버입니다.그리고 예. 자격 증명을 요구할 때 한 번만 두 번째로 링크를 클릭합니다. 그런 다음 브라우저를 닫고 다시 클릭하면 자격 증명을 다시 묻습니다. 내 문제를 해결할 것입니다. 서버에 –

관련 문제