2017-04-12 14 views
0

私はMVCの初心者です(これは私の最初のプロジェクトで働いているので、間違った説明や悪い説明をお詫びします)。ユーザーロール。私はここにこれらの質問がたくさんあることを知っていますが、彼らのどれもが役割マネージャーの私の理解を助けることができませんでした。MVCでアイデンティティロールマネージャを実装する方法

私はASP NET IDを使用してユーザーを作成し、それらを編集します。私はすべての関係を持つデータベース内のすべてのID生成テーブルを持っています。今、私はユーザーを作ることができますが、私はそれらのユーザーをどのように役割させるのかについて本当の考えはありません。

私は自分のdbで自分のプロジェクトで動作させるために、いくつかの行を変更する必要があった、ログインや登録のようなアカウントモデル/コントローラの一部だと思いました。しかし、私はほとんど役割の言及があるコードファイルを見つけることができます。私がGoogleで見たものは、私の頭の上を飛んでしまっただけです(つまり、最初のコードと種まきは、入院した初心者とデータベースを追加し、Visual Studioでコードファーストジェネレータを使用した人です。 )

アカウントやアイデンティティファイルのコントローラ/モデルには、変更や書き込みが必要なものがありますか?これは、自分のモデルに基づいてコントローラを作成し、そこからロールを追加する独自のテーブルに対してCRUDアクションを作成するようなものです?

MVC 4.5でIdentity 2.0を使用しています。助けを前にありがとう!

----編集------

は、私はもっとグーグル束をやったと私は私のプロジェクトを作ったとき、私はRoleControllerまたはApplicationRoleManager、等のための背後にあるコードを与えられていなかったと思いますこれは正常なのですか、何か間違ったことを設定しましたか?

答えて

0

私は私の問題を把握することができました。そして、私はここで私たちが行くVBにC#を変換しようとしています!

私のデータベースに自分の役割をシードしました。 startup.vbで---ルートディレクトリではないビューディレクトリに---次のように記述:

Imports Owin 
Imports Microsoft.Owin 
Imports Microsoft.AspNet.Identity 
Imports Microsoft.AspNet.Identity.EntityFramework 

<Assembly: OwinStartupAttribute(GetType(Startup))> 

Partial Public Class Startup 
    Public Sub Configuration(app As IAppBuilder) 
     ConfigureAuth(app) 
     createRoles() 
    End Sub 

    Private Sub createRoles() 
     Dim UserManager As New UserManager(Of ApplicationUser)(New UserStore(Of ApplicationUser)(New ApplicationDbContext)) 
     Dim RoleManager As New RoleManager(Of IdentityRole)(New RoleStore(Of IdentityRole)(New ApplicationDbContext)) 
     Dim role = New IdentityRole() 

     If Not RoleManager.RoleExists("Administration") Then 
      role.Name = "Administration" 
      RoleManager.Create(role) 

      UserManager.AddToRole("user id", "Administration") 

     End If 

     If Not RoleManager.RoleExists("User") Then 
      role.Name = "User" 
      RoleManager.Create(role) 

      UserManager.AddToRole("user Id", "User") 
     End If 
    End Sub 
End Class 

私は私の役割(管理とユーザー)を作成するために、私のスタートアップクラスに新しいSubプロシージャに追加しました。さらに、IdentityとIdentity.EntityFrameworkの2つのインポートは、これを動作させるためにファイルに追加する必要があります。

createRoles Subでは、新しいUserManager(ユーザーにロールを追加する)とRoleManager(ロールをdbに追加する)を定義する必要があります。 2つのマネージャの中で、 'ApplicationDbContext'はDbContext(ModelフォルダのIdentityModelにあります)に置き換えられます。その後、新しいIdentityRoleオブジェクトを追加する必要があります。

次に、特定のロールが「管理」に存在するかどうかを確認します。存在しないため、ロールオブジェクトに名前を追加してRoleManagerを使用して作成します。私はすでに自分のデータベースにユーザを持っているので、UserManagerを使ってユーザにロールを追加することができます。私はデータベースから自分のユーザーIDを取得し、それを書いた後にロールの名前を書いた。

「ユーザー」を追加する他の役割については、もう一度やります。プロジェクトとvoliaを構築してください!ロールを持つユーザーができます。これらのロールをページコントローラに適用して、「管理」または「ユーザー」によってのみアクセスされるページを持つことができます。

それはすべてのビルドそれを呼び出すことはありませんが、それらの役割は、それはもう

を追加しませんが存在するので、あなたはあなたにあなたのページにそれらの役割を適用することができますので、私はそれを実行した後、私は関数の呼び出しをコメントアウトコントローラはそうです:

<Authorize(Roles:="Administration")> 
Public Function yourPage() as ActionResult 
    Return View() 
End Function 

<Authorize(Roles:="Administration, User")> 
Public Function yourPage2() as ActionResult 
    Return View() 
End Function 

私はこれが将来他の誰かを助けることを願っています!

関連する問題