2012-05-07 18 views
0

1人のユーザー以外のすべてのユーザーがアクセスするアクションを保護したい場合、どうすればよいですか?特定のユーザーのみがアクセスできるようにする

ユーザーが商品を持っているとします。彼らがEditProductアクションに行くと、他の誰かがそれにアクセスできないようにするにはどうすればいいですか?過去に私はいつもUser.Idenity.Nameを使い、ユーザー名とdthatを比較しました。しかし、UserNameの代わりに誰かがusernameとしてログインすると、同じユーザーでも大文字小文字が区切られます。

すべての小切手で.ToUpper()などを使用すると、非常に薄暗く非効率的です。

答えて

1

あなたがこのような行動上の承認属性を置くことができます。

[Authorize(Users = "username")] 

を私はそれが大文字と小文字が区別される場合は、完全にわからないんだけど、これはアクションとコントローラを保護するための最善の方法です。また、あなたは、役割と同じ操作を行うことができます。

[Authorize(Roles = "Administrator")] 
+0

何の役割がまだ設定されていない場合は、すべてのユーザーが 'Users'と考えたりはデフォルトはありませんされています?言い換えれば、前もってセットアップせずに '[Authorize(Users =" username ")] 1を使用できますか? – Johannes

+0

Johannesは、Authorizeを使用してメソッドを保護すること、または問題のユーザーが権限を持っていることを単に監査することが目的であるかどうかは不明でした(Creatorまたはその他の権限の付与方法)。デフォルトの承認アクションフィルタは、(名前または役割別に)除外に対してのみアクションを保護することができます。製品を作成したユーザーだけが製品を編集できるようにすることが目的だった場合、これは機能しませんでした。必要に応じてカスタムのAuthorizeフィルタを作成することも、データベースからデータを取得した後に独自のチェックを行うこともできます。 –

+0

@Johannes [Authorize]は、あなたがあらゆる役割やユーザーの意味でログインしていることを監査します。 –

1

文字列に等しいのプロパティを持っています

User.Identity.Name.Equals("OtherName",StringComparison.CurrentCultureIgnoreCase) 
関連する問題