2016-07-06 2 views
0

두 개의 메뉴가 있습니다. 하나는 일반 사용자를위한 것이고 다른 하나는 관리 사용자를위한 것입니다. 컴퓨터에 로그인 한 사용자를 기준으로 로그인 한 사용자를 확인한 다음 적절한 메뉴에 표시하고 싶습니다.default.aspx에서 html로 Windows 인증을 사용하는 방법

나는 웹 사이트에서 일하고 있습니다. 내 기본 페이지는 당연한 일이지만 내부 사용자에게 사이트를 열어 관리자 만 관리 할 수 ​​있도록 인증 작동을 시도하고 있습니다. 지금까지 내가 얻은 것은 그리 많지 않습니다.

<system.web> 
     <authentication mode="Windows" /> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 

을 여기에 default.aspx에있다 : 다음은 Web.config를이다

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Frontier Reports</title> 
     <link rel="StyleSheet" href="stylesheet.css" type="text/css"> 
     <script> 

      var resize = setInterval(function() { chng_iframe_height('MainPageFrame', 'header', 'footer') }, 500); 

      function chng_iframe_height(ifrid, hid, fid) 
      { 

       var eheight = window.innerHeight; 
       var ifrobj = document.getElementById(ifrid); 
       var header = document.getElementById(hid); 
       var footer = document.getElementById(fid); 
       var header_height = getComputedStyle(header).height; 
       var footer_height = getComputedStyle(footer).height; 

       var reserved_height = parseInt(header_height) + parseInt(footer_height); 
       var reserved_height = reserved_height + 65; 

       ifrobj.style.height = eheight - reserved_height + "px"; 

      } 
     </script> 
    </head> 
    <body onload="chng_iframe_height('MainPageFrame','header','footer');"> 
     <!-- #include file="MenuCheck.aspx"--> 
     <div id="header"> 
      <div class="wrap"> 
       <div class="logo"> 
        <h1></h1> 
       </div> 
      </div> 
     </div> 
     <iframe src="MainPage.aspx" name="MainPage" id="MainPageFrame" FrameBorder=0> 
      This will show up if Chrome doesn't understand IFrame. 
     </iframe> 
     <div id="footer"> 
     <asp:LoginName ID="LoginName1" FormatString="{0}" runat="server" /> 
      <div class="wrap"> 
       <h2></h2> 
      </div> 
     </div> 
    </body> 
</html> 

당신은 내가 많이하지 않아도 볼 수 있듯이. 사용자 이름을 얻기 위해 script을 사용해 보았지만 작동하지 않았습니다. 나는 나를 위해 일할 무언가를 찾으려고 여러 다른 해답을 보았다. 내가 가진 가장 큰 문제는 서버 자체에 대한 액세스 권한이 없다는 것입니다. 내가 가지고있는 것은 이것이 작동하도록하기 위해 위에서 보여준 것입니다. 화면에 내 사용자 이름을 표시 할 수 있지만 메뉴를 변경할 수 있도록 ifelse 어딘가에 사용하는 방법을 모르겠습니다.

How to get Current User who's accessing ASP.net app?

HttpContext.Current.User not populated with Windows Authentication enabled

Using Windows Authentication in ASP.NET

How to check if user is logged in

Recipe: Enabling Windows Authentication within an Intranet ASP.NET Web application

:

나는 다음과 같은 확인했습니다

편집 나는이 작업을 얻었다 :

<% if(1 == 1) {%> 
<!-- #include file="AdminMenu.php"--> 
<% } else {%> 
<!-- #include file="Menu.php"--> 
<% } %> 

내가 if(User.Identity.GetUserID() == "CORP\\mmm976") 또는 if(User.Identity.Name == "CORP\\mmm976")로 변경하려고하면 다음 나는 서버 오류가 발생합니다.

나는이 <%using Microsoft.AspNet.Identity%>을 추가하여 GetUserID()을 작동 시키려고 노력했습니다. 여전히 서버 오류입니다.

최종 편집이 지금 작동

!

다른 .aspx 페이지를 가져 오도록 Default.aspx 페이지의 포함을 변경했습니다. 이렇게하면 사용자를 확인하고 사용자 로그인 이름을 기반으로 올바른 메뉴를 표시하는 코드 만 만들 수 있습니다. 여기에 MenuCheck.aspx은 다음과 같습니다

<%@ Page Language="C#" %> 

<% if (User.Identity.Name == @"corp\mmm976") {%> 
<!-- #include file="AdminMenu.php"--> 
<% } else {%> 
<!-- #include file="Menu.php"--> 
<% } %> 
+0

이러한 기사는 사용자가해야 할 일을 완벽하게 설명합니다. 그러나 마크 업에서 모든 작업을 수행하려고 시도하는 것처럼 보입니다. 심지어 PHP를 포함하려고합니다. 그것은 작동하지 않습니다. 게시 한 링크를 다시 방문하십시오. – Alexander

+0

게시 한 기사가 도움이되지 않습니다. 대부분은 서버에서 무언가를 변경하는 것에 대해 이야기합니다. 그렇게 할수 없어. 나머지 부분에서는 web.config에 무언가를 추가하는 방법에 대해 설명합니다. 내가 거기에 뭔가를 추가 할 때마다 작동이 멈추고 505 오류 페이지가 생깁니다. – Mike

+0

왜 서버 설정을 변경할 수 없습니까? 또한, 당신이 할 수 없다면 바로 여기에서 멈출 수 있습니다. – Alexander

답변

1

일반적으로 인증 상자 밖으로 작동하고 지금은 더 약 인증을 배울 필요가있다. 더 안전하고 편리하기 때문에 항상 Role-Based approach을 사용하는 것이 좋습니다. 즉, 관리자는 특정 관리 그룹에 속해야하며 관리자가 관리 영역에 액세스 할 수 있도록 사용할 수 있습니다.빠르고 어리석은 방법을 생각하면 비슷한 것을 생각할 수 있습니다.

<% if (User.Identity.GetUserID() == "domain\\user") { %> 
<!-- #include file="AdminMenu.php"--> 
<% } %> 

여기서 domain \ user (\\ encoded)는 관리자 ID입니다.

참고 :이 모든 것은 hpx로 코딩되어야하며 폼 인증 (Windows 인증과는 다릅니다)이 필요하지 않습니다.

또한,이 모든 것은 다른 방식으로, 예를 들어. 액세스를 제한 할 수있는 전용/admin 서브 디렉토리를 작성할 수 있습니다 (asp.net을 사용하지 않고 서버에서만 구성 할 수도 있음).

+0

로그인 한 사람에 따라 설정하려고하는 메뉴가 2 개 있습니다. '% if (User.Identity.Name == "corp \ mmm976") {%> <% } else {%> <% } %>'하지만 ''/ 'Application'에 서버 오류가 발생합니다. 나는 이것을 default.aspx의 에 포함 시켰습니다. – Mike

+0

나는 <% if (1 == 1) {%> -> <% } else {%> <% } %>'행운 – Mike

+0

사용 @ 기호'@ "공사의 \의 mmm976"'또는 이중 백 슬래시' "공사 \\ mmm976" 'C#에서 문자열에 대한 백 슬래시를 이스케이프 처리합니다. 완전한 에러를 보려면'' – Alex

관련 문제