0

プロジェクトでロール ベースの認証を使用する際に問題が発生しています。

いくつかの役割を設定し、それらをユーザーにリンクしました。

これは機能します:

 [Authorize]    
public class UsersController : Controller
{}

ログインしていない場合は、ログインするように求められます。

ただし、次のように変更すると:

 [Authorize(Roles = "ManageUsers")]    
public class UsersController : Controller
{}

そして、そのロールを持つユーザーからアクセスしようとすると、ログインするように求められます。

だから私はいくつかのゴーグルをしました、そして私はこの投稿を見つけました:リンク そして彼らは追加することを提案しました:

 <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
  <providers>
    <clear />
    <add name="AspNetSqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</roleManager>

私のウェブ設定で。私がしたことで、コントローラーにアクセスできるようになりました。しかし、私がその役割にいるかどうかにかかわらず、コントローラーにアクセスできることに気付きました。

プロジェクトに Cookie 認証を使用しています。そのため、さまざまな種類の認証の間で混乱していると思います。

public void ConfigureAuth(IAppBuilder app)
    {
        // Enable the application to use a cookie to store information for the signed in user
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            ExpireTimeSpan = TimeSpan.FromMinutes(5),
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login")
        });

だから私はここからどこへ行くべきかについていくつかのアドバイスが必要です:

デフォルトのプロジェクトで実装されているロールを利用したいだけで、データベースなどにデータを入力しました。フィルターを機能させることができません。

4

1 に答える 1

2

さまざまな種類の認証の間で混乱していると思います。

同意します。まず第一に、認証はログインに関係しています。ユーザーがログインすると、認証されます。

ユーザーの役割に基づいてコントローラー アクションまたはその他のリソースへのアクセスを制限することを、承認と呼びます。多くの場合、人々はこれらのセキュリティ上の懸念の両方についてまとめてauthとして話します。ただし、認証が実装されており、承認に問題があるように思えます。

私の知る限り、web.config の roleManager セクションは、使用しているように見える Microsoft.AspNet.Identity と互換性がありません。UserManager<T>クラスがどこかに設定されている場合は、従来の roleManager ではなく、Microsoft.AspNet.Identity ロール システムを使用する必要があります。そのため、web.config からそのセクションを削除してください。

Microsoft.AspNet.Identity がアクションへのロールベースのアクセスを妨げているようです。何かが適切に設定されていないためです。そのライブラリには、役割を管理するために使用される UserManager と同様に、RoleManager と呼ばれる独自のクラスがあります。質問には、問題の正確な原因を特定するのに役立つ十分な情報が提供されていません。ただし、Microsoft.AspNet.Identity RoleManager について調査を行うと、自分で問題をデバッグできるはずです。幸運を祈ります。

于 2014-02-10T13:12:17.990 に答える