2017-04-26 16 views
0

私は現在でアプリを開発していますが、私も学んでいます。役割asp.netの設定

私は認証のためにロールを使用したいと思いますが、私は間違っています。

重要なのは、もっと多くの役割は必要ないということです。デフォルトのものを欲しいだけです。コントローラ

[Authorize(Roles = "Administrator")] 
public class AccountController : Controller 
{} 

では、ログイン後の方法で

<system.web> 

<authentication mode="None" /> 
<compilation debug="true" targetFramework="4.5" /> 
<httpRuntime targetFramework="4.5" /> 
<roleManager enabled="true" /> 

は私がその役割にユーザーを追加します。

if (!Roles.IsUserInRole(saveAccount.Username, "Administrators")) 
    Roles.AddUserToRole(saveAccount.Username, "Administrators"); 

しかし、毎回私がログインして、私はこの

HTTP Error 401.0 - Unauthorized You do not have permission to view this directory or page. 

誰かが、私にしてください導くことができる得る別のページにリダイレクトしようか?

+0

ユーザーがデータベースに管理者の役割に割り当てられている場合は、確認することはできますか? – Kostis

+0

私はロールのためのデータベースを持っていない、その必要がありますか?私はちょうど登録ユーザーにアクセスを制限したいので。ポイントは、私は1つのタイプのユーザーしか持っていないということです。 –

+0

あなたは何とか1つ以上のロールにユーザーを割り当てなければなりません。ロールとその割り当てを永続させずにデータベース。それにかかわらず、エラーは明示的です。ユーザーは指定された役割に*いない*ため、権限がありません(401)。 –

答えて

0

ロールは認可です。認証は別のプロセスです。

あなたの必要性は、その後、既知のユーザに制限するだけである場合:

  • は、ユーザとログインビューを作成/パス
  • Implementeは、web.configファイルのセクションでの認証が<system.web>
  • 匿名ユーザー
  • を拒否フォーム

<system.web> 
    <compilation debug="true" targetFramework="4.6.1" /> 
    <httpRuntime targetFramework="4.6.1" /> 
    <authentication mode="Forms"> 
      <forms all parameters needed to a connection's forms></forms> 
    </authentication> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
</system.web> 
+0

ありがとうございました。これは私が必要とするものです。 –

0

ユーザーをロールに追加するときは、ユーザー名ではなくユーザーIDを使用する必要があります。

また、ロールテーブルのレコードを目的のロールの名前で作成する必要があります。

RoleManagerを使用して新しい役割を作成します。

(ユーザーとロールのデータベースは、サーバーエクスプローラ内のデータ接続領域のDefaultConnectionにあります)。

+0

'#yourUserId'をプログラムのUserIdに置き換えます。 –

関連する問題