2010-10-25 167 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