2011-06-28 33 views
5

你可能認爲這個問題應該在Meta SO上,但它不應該,因爲它基本上是關於ASP.Net MVC的,但是我想實現的技術已經在SO中實現了。如何實現基於聲譽的用戶權限像SO?

我希望用戶在獲得更多聲譽的同時獲得更多聲譽,就像我們在StackOverflow中所做的一樣,我的問題是如何設計用戶認證系統?我們可以依靠內置的表單身份驗證嗎?以及如何管理要顯示給用戶的哪些鏈接(取決於聲譽),哪些不是?

我想我們不能在這裏使用角色,所以我們不會以1000個角色結束,對吧?但我們只能使用2個角色(管理員,用戶)。

[編輯]:
我覺得這是更好地創建自己的用戶表,而不是取決於窗體身份驗證,所以我可以聲譽場(和其他字段)添加到用戶表和跟蹤像你說的。順便說一句@MartinHN,我知道你談到的if,但是我的問題是有更聰明的辦法來處理這些問題嗎?

+0

我想象SO在內部處理「信譽權限」,每個普通用戶只是一個「用戶」,但我從來沒有見過源,所以這是一個WAG。 – 2011-06-28 09:03:41

+0

你難以理解「認證」和「授權」嗎? StackExchange使用OpenID進行身份驗證,但不確定您擁有的權限。 –

+0

不,我不是,這只是我想找到一個系統,既便於維護/未來擴展。 –

回答

5

您可以創建一個簡單的規則系統。每個用戶都有一個與他們相關的信譽分數。然後,使用一個action filter,你可以控制訪問功能,在您的系統:

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

祝你好運!

+0

+1非常感謝,這是我想要的很酷的東西的一部分。 –

+0

請問另一個問題,如何在動作過濾器類中訪問用戶對象(以及聲譽)?我的意思是這不是上下文的一部分,如何解決這個問題? –

+1

我猜有很多種方法。一個在這裏討論:http://stackoverflow.com/questions/5758611/mvc3-action-filter-using-database-ef-4-1-dbcontext-ninject。 –

3

管理用戶的聲譽以及他/她訪問的內容(由聲譽衡量)不應該是認證機制本身的一部分,恕我直言。

在Web上,您主要使用Forms身份驗證,一旦通過身份驗證,您就可以將聲譽應用於用戶,並在用戶信譽不足時關閉區域。

我不會讓這個功能成爲認證系統的一部分。我只是讓用戶進行身份驗證,然後爲任何給定用戶呈現適當的視圖。

說你的主導航根據聲望而改變。您可以包裝需要超過1000個代表的導航欄的項目。與if聲明,並不顯示它,如果用戶少於1000.

+0

+1內容豐富。 –

相關問題