2015-02-02 4 views
7

Отказ от ответственности: это мой первый раз с ASP.NET MVC 5авторизации не работает в ASP.NET MVC 5

Я понятия не имею, почему это не работает. Я не могу заставить мое приложение MVC5 разрешать пользователям. Я сделал это в предыдущих версиях (2, 3 и 4), но я не могу заставить его работать в OWIN.

Я использую локальный IIS с необходимыми функциями включен:

IIS Features

EDIT:

Я использую SSL на IIS и RequireHttps на C#

Это код:

protected void Application_Start() 
{ 
    GlobalFilters.Filters.Add(new AuthorizeAttribute()); 
} 

Startup.Auth.cs

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/admin/account/login") 
}); 
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
app.UseGoogleAuthentication(); 

Даже если я использую Global Авторизовать Я пытался "силой", чтобы это увидеть, если это была проблема:

public class HomeController : Controller 
{ 
    [Authorize] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

Не повезло ... Я не уверен, что это было необходимо с OWIN, но я даже попробовал разрешить авторизацию форм:

<authentication mode="Forms" /> 

EDIT [2]

Ну, я обнаружил проблему ... IIS! В заключение! Теперь, Кто-нибудь знает, как это исправить? Нужно ли что-нибудь специальное для запуска OWIN на IIS? Я могу сейчас работать, но вскоре мне придется развернуть приложение и , вероятно, столкнуться с той же проблемой в сервере ...

Я уже прочитал эти:

How do you login/authenticate a user with Asp.Net MVC5 RTM bits using AspNet.Identity?

Authorize attribute not working MVC 5

Любые идеи?

+0

вы получаете какую-либо ошибку или более точно, что на выходе вы получаете? –

+0

@StephenReindl без ошибок, я могу получить доступ к странице, которую я не должен (авторизовать атрибут). Я просто вижу страницу дома/индекс – eestein

+0

hmmm ... interesting ... Почему вы добавили AuthorizeAttribute во время application_start? Мой код запуска выполняет следующие строки: FilterConfig.RegisterGlobalFilters (GlobalFilters.Filters); RouteConfig.RegisterRoutes (RouteTable.Routes); BundleConfig.RegisterBundles (BundleTable.Bundles); Остальное сделано в Startup.cs ... –

ответ

2

Поскольку ваше приложение работает с IIS, попробуйте добавить пакетnuget к вашему приложению.

+0

Спасибо, но это не так. Я читал об этом некоторое время назад, и хотя я установил этот пакет, я обновил его безрезультатно. – eestein

2

Попробуйте эту статью, это было полезно для меня OWIN setup. Я не уверен, что вы использовали претензии, поскольку не указали это в своем вопросе, что имеет решающее значение для создания аутентификационного билета для аутентификации

Кроме того, поскольку вы используете SSL, обратите внимание на свойство CookieSecure, если оно еще не работает CookieSecureOption

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/admin/account/login") 
    CookieSecure = CookieSecureOption.Never 
}); 

Я надеюсь, что это поможет

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