2010-10-25 130 views
3

我使用Authorize()属性来保护我的控制器/操作,并希望仅向未经身份验证的用户显示登录操作 - 或者换句话说,拒绝访问经过身份验证的用户。MVC授权属性拒绝

我一直没能找到网络处理要么拒绝许可或允许负权限(即!的loggedIn)

可有人请点我在正确的方向上的东西吗?

MVC2,.NET 4中

编辑:要clairfy,我想是这样的:

Public Class PublicController 
    Inherits ControllerBase 

    <Authorize()> 'Only logged-in users can logout 
    Public Function Logout() as ActionResult 
     Return View() 
    End Function 

    'Something here to indicate that only NON-authorized users should see this action 
    Public Function Login() as ActionResult 
     Return View() 
    End Function 

End Class 
+1

目前还不清楚你的问题是什么。您使用'[Authorize]'装饰的任何控制器/操作方法将默认限制为已通过身份验证的用户。换句话说,如果你没有登录,你将无法执行这些控制器/操作。你还想要限制/允许什么? – RPM1984 2010-10-25 02:15:21

+1

这里只是猜测,Basiclife;你的意思是说,如果某人已经登录了,但只是没有以角色/用户名的Authorize()版本的适当角色,那么你希望除了它们之外的东西被定向到登录页面? – 2010-10-25 02:22:32

+0

如果Andrew的正确,在谷歌与“MVC授权”的快速搜索产量如下所示:http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx – xandy 2010-10-25 02:32:25

回答

11

难道是这样简单:

public class DenyAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     return !base.AuthorizeCore(httpContext); 
    } 
} 
+0

有趣的想法 - 唯一的问题是,我使用的属性,让Telerik菜单securty修剪我的网站地图 - 我不知道是否会检测自定义属性(尽管我希望如此!)。我会给它一个镜头,并在一天左右回复给你 – Basic 2010-10-25 18:45:55

+0

@Basiclife - 它会,我熟悉他们的一些东西,应该拿起自定义属性罚款。 - 这也是你应该在你的问题中包含的东西。你希望把这个与什么类型的组件结合起来会改变答案。 – jfar 2010-10-25 18:58:21

+0

有效点:)并且感谢 – Basic 2010-10-26 14:26:30