说,我有一个包含用户名/密码的SQL Server数据库。在我的"登录"查看,我希望在用户名/密码文本字段中输入数据,当我点击"登录"我想使用我的登录控制器将这些值与数据库中的值进行比较。所有这些都是相当直接的:
但是,我想在我网站的其余控制器上使用[Authorize]
属性。在通过登录页面授予访问权限后,我似乎找不到任何解释如何"授权"用户,以便["Authorize"]
属性识别此用户并允许他们访问其他控制器/操作。以下是我开始设置的方法,但我无法从这里找到任何方向。
public class LoginController : Controller
{
// GET: /<controller>/
//[Route("/Login")]
public ActionResult Index()
{
return View();
}
public bool Login(Workflow.Models.WorkflowContext wfc, string username, string password)
{
var user = wfc.User.Where(u => u.Active && u.Username == username && u.Password == password).ToList();
if (user.Count > 0)
{
//User may log in
return true;
}
else
//Access Denied
return false;
}
}
例如,如果没有用户授权,我不希望他们能够访问我的&#34; Home Controller&#34;:
[Authorize]
public class HomeController : Controller
{
[Route("/Home")]
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewData["Message"] = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewData["Message"] = "Your contact page.";
return View();
}
public ActionResult Error()
{
return View();
}
}
我听说过这些课程&#34;身份&#34;和&#34; SignInManager&#34;我对如何使用其中任何一个选项感到有些不知所措。我仍然是ASP .Net MVC的新手,所以我试图了解授权如何工作。感谢。
答案 0 :(得分:5)
身份验证/授权比仅仅验证一次用户名和密码更复杂 。 ASP.NET Identity是ASP.NET应用程序可用于处理身份验证/授权的几种不同机制之一,是个人用户身份验证的推荐方法。它取代了很多旧的ASP.NET成员资格。 SignInManager
只是一个ASP.NET类的一部分,它处理诸如签署用户之类的事情(显然)。这不是一个单独的事情。
有了这个,你就不得不深入挖掘。你绝对不想尝试从零开始创建自己的系统,并且向前发展,Identity几乎就是ASP.NET中的主要身份验证和授权方法。立即学习,您将能够与绝大多数ASP.NET站点一起工作,并且您将能够将您的知识应用于您创建的任何新ASP.NET站点。
在https://www.asp.net/identity开始您的旅程。这里列出了很多很好的教程和指南,并从那里链接(确保查看其他资源)。此外,您还要创建一个选择了单个用户帐户的新MVC项目。这将为您提供一个带有基本身份内容的脚手架项目。您还可以全力以赴,创建一个空白的MVC项目,然后安装Identity Samples Nuget包。这将创建一个支架项目,其中包含Identity中的几乎所有功能(双因素身份验证,第三方OAuth登录等)。有了它,你就可以很好地了解一切是如何运作的。