使用ASP.Net MVC5进行简单登录

时间:2015-06-28 16:10:40

标签: c# asp.net asp.net-mvc asp.net-identity owin

我一直试图让我的头围绕OWIN和身份,以使其与我的现有应用程序很好地配合。该应用程序在Plain ASP.Net中编码,我想将其移植到MVC以更好地组织它。该应用程序已建立数据库,包括Users表,因此使用Identity表不是选项。我用Identity打的墙是它需要电子邮件,而我的系统不应该要求用户发送电子邮件。在尝试了几乎所有的事情之后(几乎每天都在阅读关于这个主题的每一个答案)我得出的结论是,它需要更多的时间来完成它,这让我想到了我的问题。

成为PHP的人(不久前跳到ASP.Net)我可以轻松地在10分钟内完成工作登录,现在我需要一个类似的东西,比如

$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中找不到会话类。这甚至可能吗?如果不是,是否有解决我问题的简单途径?

2 个答案:

答案 0 :(得分:1)

最常见的缓存方式是将其置于“全局”中。服务器缓存或将其放在会话中。有other个方法可以保存状态,我建议您查看替代方法,因为下面的技术使用System.Web命名空间。 System.Web不会包含在MVC6 中。

全局缓存

//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"];

会话缓存

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

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

答案 1 :(得分:1)

你基本上可以告诉owin manuelly在不使用身份资料的情况下对用户进行身份验证(我也不喜欢它,至少对于小项目而言)。然后,您可以轻松使用默认授权anotation 这是一个教程:OWIN AUTH