2017-03-09 8 views
1

簡単な作業のために、すべての専門家からの指導が必要です。 私はWebベースのアプリケーションである私の最後の年のプロジェクトに取り組んでいます。 このアプリケーションでは、会計士が手数料を管理し、管理者が教師と学生のアカウントを管理するなど、さまざまなタスクを実行する複数のユーザーを作成する必要があります。 私はこれに熱心に取り組んでいます。私は簡単な認証を学びました。 ユーザー名に基づいてユーザーを認証し、特定のページや複数のページを持つ特定のフォルダにアクセスできるようにしました。 私はこれをフォーム認証を使用して行います。 しかし 今私はユ​​ーザーロールを作成し、異なるユーザーに異なるロールを割り当てたいので、Web設定ファイルに各ユーザー名を追加する必要はありません。 私はこれを行う最も簡単な方法をお勧めします。私はそれを学ぶことができるから、任意の本、または記事やYouTubeのビデオはありますか? スタックオーバーフローとmsdnを検索しましたが、理解できません。 私はあなたの提案を待っています、 事前に感謝します。 私はMVCで働いていません。 私はあなたがこのようにユーザーに役割を添付することができ、.NET 4.5、Visual Studioの2012とSQL Server 2014Asp.net Webアプリケーションプロジェクトでユーザーロールを作成

+0

の可能性のある重複した[Windows認証とデータベースを介して権限ロールを追加 - MVC asp.net](http://stackoverflow.com/questions/32589863/windows-authentication-and-add-authorization-roles-through -database-mvc-asp-ne) – mason

答えて

1

を使用しています:globl.asaxで は、以下のイベントを追加し、ログインしたユーザーに割り当てる役割を読みます新しいGenericPincipalを作成し、それをユーザーに割り当てます。

protected void Application_AuthenticateRequest(object sender, EventArgs e) 
     { 

      var app = (HttpApplication) sender; 
      var ctx = app.Context; 

      if (ctx.User != null) 
      { 
       //Read the roles from database for current user, create a new Principal, attach the principal to the user (im using EF)    
       using (var context = new BackendDbContext()) 
       { 
        var user = context.Set<User>().Find(Convert.ToInt32(ctx.User.Identity.Name)); 
        var identity = new GenericIdentity(user.UserId.ToString()); 
        var principal = new GenericPrincipal(
         identity, 
         new[] {user.UserRoleId.ToString()}); 

        ctx.User = principal; 
       } 
      } 
     } 
+0

私はsqlデータベースに登録されたユーザーを保存しました。このユーザーはユーザーテーブルからユーザー名とパスワードを比較してWebアプリケーションにログインしています....今、どのようにユーザーにROLEを割り当てるか?上記の例のように –

+0

:現在のユーザーのデータベースからrole/rolesを読み取り、プリンシパルにロールを設定します –

+0

データベースにどのように役割を作成するのですか? あなたは、2つのカラムのロールIDとロール名を持つデータベースにテーブルを作成し、そのテーブルにアクセスする必要があることを意味しますか? これには完全な手順を書いてください。 –

関連する問題