Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC[授权]扩展只检查';启用';位标志_C#_Asp.net Mvc_Asp.net Membership - Fatal编程技术网

C# MVC[授权]扩展只检查';启用';位标志

C# MVC[授权]扩展只检查';启用';位标志,c#,asp.net-mvc,asp.net-membership,C#,Asp.net Mvc,Asp.net Membership,我首先使用EF代码和ASP.NETMVC4。我的用户将以OAuth提供商(而非本机帐户)的身份登录到该站点。我的标准模型中有一个Users表,而Web页面保存着OAuth数据,因此它可以正常工作。我在我的用户表中添加了一个“启用”位字段,这样,当站点仍处于“alpha”状态时,除非我批准,否则用户将无法访问该站点。所以用户可以创建OAuth帐户,但我想使用注释隔离特定的控制器,以防止使用它们。例如,我有一个“小部件”控制器。现在它设置为[授权],因此用户必须登录。但是我需要我自己的自定义注释,[

我首先使用EF代码和ASP.NETMVC4。我的用户将以OAuth提供商(而非本机帐户)的身份登录到该站点。我的标准模型中有一个Users表,而Web页面保存着OAuth数据,因此它可以正常工作。我在我的用户表中添加了一个“启用”位字段,这样,当站点仍处于“alpha”状态时,除非我批准,否则用户将无法访问该站点。所以用户可以创建OAuth帐户,但我想使用注释隔离特定的控制器,以防止使用它们。例如,我有一个“小部件”控制器。现在它设置为[授权],因此用户必须登录。但是我需要我自己的自定义注释,[批准]或[启用],这样即使登录,用户也无法继续,除非我在用户表中将该位翻转为“打开”。虽然我可以编写自己的helper方法并手动注入它,但我更愿意使用注释,因为一旦站点处于活动状态,就更容易推出和删除它

将来,如果该网站曾经收费,我很乐意调出[启用]来检查用户是否是最新的、明智的付款方式。所以我觉得注释是正确的方法,只是不确定100%如何去做,而且还没有一个我不知道的会员资格


谢谢

为什么不在验证他们的登录时简单地添加一个启用位检查?然后,您可以阻止未启用的用户完全登录(不确定为什么您希望他们登录,但无法访问任何页面..有点傻)


或者,您可以简单地为此使用角色。将用户添加到“已启用”角色,然后将页面配置为仅允许从该角色访问。出于某种原因,似乎比滚动自己的页面容易得多。

不是因为他们不能访问“任何”页面,而是因为他们被限制访问某些页面。如果你想到一个信用卡被取消的忠诚客户,他们可能会错过付款。你希望他们能够登录并操作他们的帐户,但不能访问他们应该付费的部分网站。这不是不合理的。我当然可以增加一个角色;但在我开始之前,我想确认一下。@Richthofen-使用角色很简单,不需要任何特殊的代码,除了配置之外,你没有理由想做任何其他事情。如果他们的会员资格失效,您只需删除“ValidMember”角色或其他任何角色,他们就无法访问受ValidMember角色保护的区域。角色很酷,我肯定在考虑。还有一个问题:ASP.NET MVC框架之外的角色是否合适?例如,我还计划发布一个API。API也将根据users表进行身份验证。角色可以被扩展,比如说,一个web服务方法吗?@Richthofen-角色只是成员子系统的一种机制。正确的问题是询问您是否可以在web服务中使用成员资格,答案是肯定的,这意味着您可以使用roles.Upvoted并标记为answer。我需要将我的成员声明内容移动到类库中,而不是在网站上,但除此之外,我将继续w/角色。