您可能认为这个问题应该在Meta SO上,但它不应该,因为它基本上是关于ASP.Net MVC,但我想要实现的技术已经在SO中实现。
我希望用户在获得更多声誉的同时拥有权力,就像我们在StackOverflow中所做的那样,我的问题是如何设计用户身份验证系统?我们可以依赖内置的Forms身份验证吗?以及如何管理为用户显示的链接(取决于信誉)和不显示的内容?
我认为我们不能在这里使用角色,所以我们最终不会有1000个角色,对吧?但我们可能只使用2个角色(管理员,用户)。
[编辑]:
我认为最好创建我自己的Users表而不是依赖于Forms身份验证,因此我可以将声誉字段(和其他字段)添加到users表并跟踪它,就像你说的那样。 BTW @MartinHN,我知道你所谈到的if
,但我的问题是有更聪明的方法来处理这些问题吗?
答案 0 :(得分:5)
您可以创建一个简单的规则系统。每个用户都有与之关联的信誉评分。然后,使用action filter,您可以控制对系统中函数的访问:
public class SomeController : IController
{
...
[ReputationNeeded(Reputations.CanVoteDown)] // your custom action filter
[HttpPost]
public ActionResult VoteDown(...)
{ /* */ }
}
祝你好运!
答案 1 :(得分:3)
管理用户的声誉,以及他/她可以访问的内容(通过声誉衡量),不应该是身份验证机制本身的一部分,恕我直言。
在网络上,您主要使用表单身份验证,一旦通过身份验证,您可以将声誉应用于用户,并在用户没有足够声誉的情况下关闭区域。
我不会将此功能作为身份验证系统的一部分。我只是让用户进行身份验证,然后为任何给定的用户呈现适当的视图。
假设您的主导航根据声誉而变化。您需要包含需要超过1000个代表的导航栏的项目。使用if
语句,如果用户少于1000,则不显示。