2010-10-25 2 views
3

Я использую атрибут Authorize() для защиты моих контроллеров/действий и хочу только показывать действие входа для не прошедших проверку пользователей - иначе, иначе говоря, запретить доступ к аутентифицированным пользователям.MVC Авторизованный атрибут deny

Я не смог найти что-нибудь в Интернете дело либо с отрицающих разрешения или позволять отрицательным разрешений (LoggedIn т.е.!)

Может кто-то пожалуйста, мне точку в правильном направлении?

MVC2, .Net 4

EDIT: Для 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

+1

Просто угадывая здесь, Basiclife; Вы имеете в виду, что если кто-то уже вошел в систему, но только не в соответствующей роли для версии Authorize(), которая принимает роли/имена пользователей, вы хотите, чтобы на странице входа было другое, кроме того, что они были направлены? –

+0

Если Эндрю правильно, быстрый поиск в google с помощью «mvc authorize» дает что-то вроде: http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx – xandy

ответ

11

Может быть так просто, как это:

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

Интересная идея. Единственная проблема заключается в том, что я использую атрибуты, чтобы позволить меню Telerik для обеспечения конфиденциальности моей карты сайта. Я не уверен, что это будет обнаруживать пользовательские атрибуты (хотя я бы так надеялся!). Я дам ему шанс и вернусь к тебе через день или около того. – Basic

+0

@Basiclife - Это будет, я знаком с некоторыми их вещами, должен хорошо подобрать пользовательские атрибуты. - Также это то, что вы должны включить в свой вопрос. Какие компоненты, которые вы надеялись интегрировать, изменили бы ответ. – jfar

+0

Действительный пункт :) и спасибо – Basic

Смежные вопросы