繁体   English   中英

使用ASP.Net MVC5轻松登录

[英]Simple Login with ASP.Net MVC5

我一直在努力使OWIN和Identity脱颖而出,以使其在我现有的应用程序中很好地发挥作用。 该应用程序是用Plain ASP.Net编码的,我想将其移植到MVC以更好地组织它。 该应用程序已经建立了包括Users表的数据库,因此不能选择使用Identity表。 我遇到Identity时遇到的麻烦是它需要Email,而我的系统不应要求用户使用Email。 在尝试了几乎所有内容之后(几天阅读了关于该主题的几乎所有答案),我得出的结论是,完成它将花费更多的时间,这使我提出了自己的问题。

作为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中找不到会话类。 那有可能吗? 如果没有,有没有简单的方法可以解决我的问题?

缓存的最常见方法是将其放置在“全局”服务器缓存中或将其放置在会话中。 还有其他保存状态的方法,由于下面的技术使用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"];

您基本上可以告诉owin手动认证用户,而无需使用身份信息(我也不喜欢,至少对于小型项目而言)。 然后,您可以轻松地使用默认的授权注释。这是一个教程: OWIN AUTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM