2016-07-06 12 views
0

私は2つのメニューを持っています.1つは通常のユーザー用に設定され、もう1つは管理者用に設定されています。私は誰がログインしているのかを(自分のコンピュータへの彼らのADログインに基づいて)確認してから、適切なメニューに表示したいと思います。htmlのdefault.aspxでWindows認証を使用する方法

私はウェブサイトで働いています。私のメインページは今のところプレーンですが、私は内部ユーザーにサイトを開き、管理者だけを管理者にするために認証を取得しようとしています。私が今までに持っていたことはあまりありません。あなたは私が多くを持っていない見ることができるように

<!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> 

:ここにweb.configファイルがあります:

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

、ここではdefault.aspxをです。私は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

EDIT私はこれが動作するようになった:

<% 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()を動作させるようにしました。静止サーバーエラー。

FINAL EDIT

これが動作するようになりました!

Default.aspxページのインクルードを変​​更して、別の.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を使用することをおすすめします。これは、管理者が特定の管理グループに属している必要があり、管理グループにアクセスできるようにする必要があることを意味します。迅速かつ汚いアプローチのためには、しかし、ドメイン\ユーザーが(\\エンコードされた)あなたの管理者IDです

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

のようなものを考えることができます。

注:これはすべてaspx(htmlではなく)でコード化する必要があり、フォーム認証(Windows認証とは異なります)を必要としないことに注意してください。

また、これは他の方法、例えば、アクセスを制限する専用/管理サブディレクトリを作成することもできます(asp.netを使用せずにサーバーでのみ構成できます)。

+0

私は、誰がログインしているかによって設定しようとしている2つのメニューを持っています。これを試しました。<%if(User.Identity.Name == "corp \ mmm976"){%> <! - #include file = "AdminMenu.php" - > <% } else {%> <! - #include file = "Menu.php" - > <% } %> 'ですが、 ''/'Application'にサーバーエラーが発生します。私はこれをdefault.aspxのに含めました – Mike

+0

私はさらに、<%if(1 == 1){%> <! - #include file = "AdminMenu.php" - > <% } else {%> <! - の#includeファイル= "Menu.php" - > <% } %> '運 – Mike

+0

使用@記号と' @ "コープの\ mmm976" 'またはダブルバックスラッシュ' "CORP \\ mmm976" 'C#で文字列のバックスラッシュをエスケープします。完全なエラーを表示するには、 '' – Alex

関連する問題