在ASP.NET MVC中为用户实现暂停或惩罚系统

Max*_*sky 5 c# asp.net asp.net-mvc asp.net-membership

我正在ASP.NET MVC中编写一个具有用户帐户的站点.由于该网站将面向讨论,我认为我需要一个管理员系统,以便能够在Stack Overflow上调节用户,就像我们在这里一样.我希望能够将用户置于"暂停"状态,以便他们能够登录该站点(此时他们会收到一条消息,例如,"您的帐户已被暂停,直到[日期]"),但无法完成他们通常能够做的用户的功能.

实现这个的最佳方法是什么?

我正在考虑创建一个"暂停"角色,但问题是,我对普通用户本身有几个不同的角色,具有不同的权限.

你有没有设计过这样的功能?我该怎么办?提前致谢.

Sky*_*ers 2

让我将评论转换为答案,并强奸扎克和詹姆斯的答案,以提供我认为可行的解决方案,而无需进入“自定义提供程序区域”。虽然编写自定义提供程序并不是非常复杂,但根据我的经验,如果您可以让内置提供程序执行您想要的操作,即使它需要到处闻一闻,也总是最好的途径。

添加一个角色,说WellGroomedAndBehavesSelf, that controls access to things that well groomed and behaved users should have access to.

在 web.config 中实现配置文件并添加ReinstateDate属性(或UngroundedOnDate ;-D).

当用户行为不当时,将其从角色中删除WellGroomedAndBehavesSelf并设置ReinstateDate profile property.

在您的登录逻辑中,覆盖OnAuthenticate并检查ReinstateDate配置文件属性(如果存在并通过),清除它并将用户添加到角色WellGroomedAndBehavesSelf.

完成,无需定制提供商。

更新: 另一种方法是检查角色,如果丢失WellGroomedAndBehavesSelf,则检查配置文件中的ReinstateDate. 如果它已通过或不存在,则将用户放回WellGroomedAndBehavesSelf.

效果相同,但逻辑上的细微变化将提供更强大的解决方案。

如何实施配置文件:

如果您正在使用网站项目,请查看此处

如果您使用的是 Web应用程序项目,请查看此处