2015-06-28 2 views
0

Я пытаюсь завести голову вокруг OWIN и Identity, чтобы она хорошо играла с моим существующим приложением. Приложение было закодировано в Plain ASP.Net, и я хочу передать его в MVC, чтобы организовать его лучше. Приложение установило базу данных, включая таблицу Users, поэтому использование таблицы Identity не является опцией. Стена, в которой я попала с помощью Identity, заключается в том, что она требует электронной почты, и моя система НЕ должна требовать электронной почты пользователя. Пробовав почти все (дни, читающие почти каждый ответ на эту тему), я пришел к выводу, что для этого потребуется больше времени, и это подводит меня к моему вопросу.Простой вход с ASP.Net MVC5

Being PHP парень (вскочил на ASP.Net не так давно) я мог бы легко сделать рабочий вход в 10minutes, и теперь мне нужно кое-что как это, что-то вроде

$user = User::findByUserName($username); //somehow here I find user from database 
if($user!=null) 
{ 
    $_SESSION['isLoggedIn'] = true; 
    $_SESSION['fullname'] = $user->fullName; 
} 
else 
{ 
    //redirect to login with error 
} 

Я не могу найти класс сеанса в MVC5. Возможно ли это? Если нет, есть ли простой способ решить мою проблему?

ответ

1

Наиболее распространенным способом кэширования является либо размещение его в «глобальном» кеше сервера, либо размещение его в сеансе. Существует other способов сохранения состояния, и я бы порекомендовал искать альтернативы, поскольку нижеприведенные методы используют пространство имен System.Web. System.Web не будет включен в MVC6.

Global Cache

//Save User 
System.Web.HttpContext.Current.Cache.Insert(
         "CurrentUser", 
         User, 
         null, 
         System.Web.Caching.Cache.NoAbsoluteExpiration, 
         new TimeSpan(0,20,0), 
         System.Web.Caching.CacheItemPriority.Normal, 
         null);  
//Get User 
User user=(User)System.Web.HttpContext.Current.Cache["CurrentUser"]; 

Cache Session

//Save User 
HttpContext.Current.Session.Add("CurrentUser",User); 

//Get User 
User=(User)HttpContext.Current.Session["CurrentUser"]; 
+0

Есть ли способ связать его с [Авторизовать], чтобы я не должен был проверять каждый контроллер самостоятельно? –

+0

Не можете ли вы поместить билет в куки. Таким образом, это будет по каждому запросу. Поместите идентификатор в файл cookie и прочитайте его по мере необходимости. Это встроено в проверку подлинности форм. Когда файлы cookie поддерживаются. Не поддерживаются ли обертки OWIN для поддержки этого? –

+0

Кроме того, вы можете поместить код чека в расширенный контроллер.OnAuthorization(), он вызывается автоматически. –

1

вы могли в основном сказать Owin manuelly для аутентификации пользователя без использования личных данных вещей (я не люблю его либо, в меньше всего для небольших проектов). Тогда вы можете легко использовать стандартную авторизацию anotation Heres autorial: OWIN AUTH