假设,我有一个包含用户名/密码的 SQL Server 数据库。在我的“登录” View 中,我希望在用户名/密码文本字段中输入数据,当我单击“登录”时,我想使用我的登录 Controller 将这些值与数据库中的值进行比较。所有这些都相当简单:
但是,我想在网站 Controller 的其余部分上使用 [Authorize]
属性。在通过登录页面授予访问权限后,我似乎找不到任何示例来解释如何“授权”用户,以便 ["Authorize"]
属性识别该用户并允许他们访问其他 Controller /操作。这是我开始设置的方式,但我找不到任何关于从这里开始的方向。
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;
}
}
例如,在没有授权用户的情况下,我不希望他们能够访问我的“家庭 Controller ”:
[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();
}
}
我听说过“Identity”和“SignInManager”类,但我对如何使用这些选项感到有点不知所措。我对 ASP .Net MVC 还是有点陌生,所以我试图了解授权的工作原理。谢谢。
最佳答案
身份验证/授权比简单地验证一次用户名和密码要复杂得多。 ASP.NET Identity 是 ASP.NET 应用程序可用于处理身份验证/授权的几种不同机制之一,也是个人用户身份验证的推荐方法。它取代了更较旧的 ASP.NET 成员(member)资格。 SignInManager
只是 ASP.NET Identity 的一个类,它处理诸如用户登录之类的事情(显然)。这不是一些单独的事情。
有了这个,您就必须深入研究。您绝对不想尝试从头开始创建自己的系统,并且展望 future ,身份几乎是身份验证的主要方法以及 ASP.NET 中的授权。立即学习,您将能够使用大多数 ASP.NET 网站,并且能够将您的知识应用到您创建的任何新 ASP.NET 网站。
从https://www.asp.net/identity开始您的旅程。那里列出了许多很好的教程和指南,并从那里链接到(请务必查看其他资源)。此外,您还需要创建一个新的 MVC 项目并选择“个人用户帐户”。这将为您提供一个包含基本 Identity 内容的脚手架项目。您还可以全力以赴创建一个空白的 MVC 项目,然后安装 Identity Samples Nuget 包。这将创建一个几乎包含 Identity 中所有功能的脚手架项目(双因素身份验证、第三方 OAuth 登录等)。这样您就可以很好地了解一切是如何运作的。
关于c# - 身份在 Asp .Net MVC 5 中如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988465/