2011-06-28 10 views
5

この質問はMetaにあるべきだと思うかもしれませんが、基本的にASP.Net MVCについてですが、私が実装したい技術はすでにSOに実装されています。評判ベースのユーザー権限をSOのように実装する方法は?

私はStackOverflowでのやり方と同じように評判が上がる一方、ユーザー認証システムを設計する方法がありますか?組み込みのフォーム認証に頼ることはできますか?ユーザーに表示されるリンク(評判に応じて)とリンクされないリンクを管理する方法

私たちはここでロールを使用することはできないと思いますので、私たちは1000人のロールで終わるわけですよね? 2つの役割(管理者、ユーザー)のみを使用することがあります。

[編集]:
私は私自身のユーザーテーブルではなく、フォーム認証に応じて作成する方がよいと思うし、私は、ユーザーテーブルに評判フィールド(と他のフィールド)を追加し、それを追跡することができますあなたが言ったように。 BTW @MartinHN、あなたが話したifについて知っていますが、私の質問はそのような問題を処理するよりスマートな方法ですか?

+0

私はSOが "評判のパーミッション"を内部的に扱い、すべての普通のユーザーは単なる "ユーザー"だと思っていますが、ソースは見たことがないのでWAGです。 –

+0

あなたは "認証"と "認証"を混同していますか? StackExchangeは認証にOpenIDを使用しますが、あなたが持っているパーミッションは決まっていません。 –

+0

いいえ、私は保守の容易さと将来の拡張の両方を実現できるシステムを探したいと思っています。 –

答えて

5

単純なルールシステムを作成できます。各ユーザーには、それぞれに関連付けられた評判スコアがあります。

public class SomeController : IController 
{ 
    ... 
    [ReputationNeeded(Reputations.CanVoteDown)] // your custom action filter 
    [HttpPost] 
    public ActionResult VoteDown(...) 
    { /* */ } 
} 

幸運:次に、あなたのシステムの機能へのアクセスを制御することができaction filterを使用して!

+0

+1ありがとう、これは私が欲しいクールなものの一部です。 –

+0

別の質問、どのようにアクションフィルタクラス内のユーザーオブジェクト(および評判)にアクセスしてください?これはコンテキストの一部ではなく、これを回避するにはどうすればいいのですか? –

+1

多くの方法があります。 1つはここで議論されます:http://stackoverflow.com/questions/5758611/mvc3-action-filter-using-database-ef-4-1-dbcontext-ninject –

3

ユーザーの評判とアクセス権(評判によって測定されたもの)の管理は、認証メカニズム自体IMHOの一部であってはなりません。

ウェブでは主にフォーム認証を使用し、一度認証されるとユーザーに評判を適用し、ユーザーの評判が十分でない場合は領域を閉鎖する必要があります。

私はこの機能を認証システムの一部にしません。私はちょうどユーザーに認証を与えてから、任意のユーザーに対して適切なビューをレンダリングさせます。

評判によってあなたのメインナビゲーションが変わったとしましょう。あなたは1000以上の担当者を必要とするナビゲーションバーの項目をラップします。 ifステートメントを使用し、ユーザーが1000未満の場合は表示しないでください。

+0

+1有益です。 –