2010-10-25 4 views
3

J'utilise l'attribut Authorize() pour sécuriser mes contrôleurs/actions et je souhaite uniquement afficher l'action de connexion aux utilisateurs non authentifiés - ou en d'autres termes, refuser l'accès aux utilisateurs authentifiés.Attribut MVC Authorize deny

Je n'ai pas pu trouver quoi que ce soit sur le web traitant soit en refusant l'autorisation ou permettant des autorisations négatives (par exemple! LoggedIn)

Quelqu'un peut-il s'il vous plaît me pointer dans la bonne direction?

MVC2, .Net 4

EDIT: Pour clairfy, je veux quelque chose comme ceci:

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

on ne sait pas quel est votre problème. Tout contrôleur/méthode d'action que vous décorez avec '[Authorize]' sera par défaut limité aux utilisateurs authentifiés. En d'autres termes, si vous n'êtes pas connecté, vous ne pourrez pas exécuter ces contrôleurs/actions. Quoi d'autre voulez-vous restreindre/autoriser? – RPM1984

+1

Je devine juste ici, Basiclife; Voulez-vous dire que si quelqu'un est déjà connecté, mais pas dans un rôle approprié pour la version de Authorize() qui prend des rôles/noms d'utilisateur, vous voulez que quelque chose d'autre que ceux-ci soient dirigés vers la page de connexion? –

+0

Si Andrew est correct, une recherche rapide dans google avec "autoriser mvc" donner quelque chose comme: http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx – xandy

Répondre

11

Serait-ce aussi simple que cela:

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

Idée intéressante - Le seul problème est que j'utilise les attributs pour permettre au menu Telerik de sécuriser mon sitemap - je ne suis pas sûr que ce soit le cas détecter les attributs personnalisés (bien que je l'espère!). Je vais donner un coup de feu et de revenir à vous dans un jour – Basic

+0

@Basiclife - Il va, je suis familier avec certaines de leurs choses, devrait ramasser les attributs personnalisés très bien. - C'est aussi le genre de chose que vous devriez inclure dans votre question. Quel genre de composants votre espoir d'intégrer cela avec changerait la réponse. – jfar

+0

Point valide :) et merci – Basic

Questions connexes