2011-07-25 16 views
1

私は自分のウェブサイト内のナビゲーションにサイトマップを使用しています。ロールベースではなく、個々のユーザーに基づいて特定のページにアクセスルールを含めることができる方法はありますか?各ユーザーは各ページへのアクセス権を持ちます。個々のページのアクセスルールASP.net

私はアクセスルールのセキュリティを調査しました。これは、個々のユーザーが、ページベースではなくフォルダベースであることを意味しています。

各ページパス情報を持つデータベースに新しいテーブルを作成したくありません。

答えて

1

の要素をweb.configに使用すると、ページごとのユーザーを指定できます。

<configuration> 
    <location path="JohnsPage.aspx"> 
     <system.web> 
      <authorization> 
       <allow users="John" /> 
       <deny users="*" /> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 

これは、ユーザーがログインしたユーザー名に基づいて動作します。統合Windows認証を使用している場合は、次のようにあなたは、web.configファイルでそれをconfugureすることができますあまりにも<allow users="DOMAIN\John" />

+0

は私のWebを変更したくありませんconfigファイル –

1

のようにドメインを指定する必要があります忘れないでください:

<?xml version="1.0"?> 

<configuration> 
    <location path="AnyUserPage.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="AnyUser" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
</configuration> 
+0

'は私のWeb設定ファイルを変更したくありません –

+0

これは一般的な方法です。しかし、あなたはPrincipalPermissionAttributesを次のように使うことができます: 'using System; using System.Security.Permissions; ; [PrincipalPermission(SecurityAction.Demand、User = "SomeUser")] public class EmployeeManager {...} 'トピックの詳細[ここ](http://weblogs.asp.net/scottgu/archive/2006/) 10/04/Tip_2F00_Trick_3A00_-PrincipalPermissionAttributes.aspxを使用した認可ルール/ビジネス/データレイヤーの追加ユーザーが間違っていると、ASP.NETランタイムはグローバル例外ハンドラ (Application_Error)で処理するセキュリティ例外をスローします。 – Kirill

+0

しかし、このアプローチは本当に柔軟性がありません。なぜあなたはPage_Loadでユーザーをチェックしないのですか? Membership: 'string userName = User.Identity.Name;を使用すると、 – Kirill

関連する問題