身份如何在Asp .Net MVC 5中运行

Rin*_*lar 2 c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity

说,我有一个包含用户名/密码的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,如果没有用户授权,我不希望他们能够访问我的"家庭控制器":

[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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我听说过"Identity"和"SignInManager"这两个类,我对如何使用其中任何一个选项感到有些不知所措.我仍然是ASP .Net MVC的新手,所以我试图掌握授权的工作原理.谢谢.

Chr*_*att 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登录等).有了这个,你就可以很好地了解一切是如何运作的.