【问题标题】:How Does Identity Work in Asp .Net MVC 5身份如何在 Asp .Net MVC 5 中工作
【发布时间】:2017-02-01 19:52:12
【问题描述】:

假设,我有一个包含用户名/密码的 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;
    }
}

例如,在没有用户授权的情况下,我不希望他们能够访问我的“家庭控制器”:

[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 还有些陌生,所以我试图了解授权的工作原理。谢谢。

【问题讨论】:

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


    【解决方案1】:

    身份验证/授权比简单地验证用户名和密码要复杂得多。 ASP.NET 身份是 ASP.NET 应用程序可用于处理身份验证/授权的几种不同机制之一,并且是个人用户身份验证的推荐方法。它取代了很多较旧的 ASP.NET 成员资格。 SignInManager 只是一个属于 ASP.NET Identity 的类,它处理诸如登录用户(显然)之类的事情。这不是什么单独的东西。

    除此之外,您只需要深入研究即可。您绝对不想尝试从头开始创建自己的系统,而且今后,身份验证几乎是主要的身份验证方法和 ASP.NET 中的授权。现在学习它,您将能够使用大多数 ASP.NET 站点,并且您将能够将您的知识应用到您创建的任何新的 ASP.NET 站点。

    https://www.asp.net/identity 开始您的旅程。那里列出了许多很好的教程和指南,并从那里链接到那里(请务必查看其他资源)。此外,您还需要创建一个新的 MVC 项目并选择个人用户帐户。这将为您提供一个包含基本 Identity 内容的脚手架项目。您还可以全力以赴并创建一个空白 MVC 项目,然后安装 Identity Samples Nuget 包。这将创建一个脚手架项目,其中包含 Identity 中的几乎所有功能(双因素身份验证、第三方 OAuth 登录等)。这样您就可以很好地了解一切是如何运作的。

    【讨论】:

    • 谢谢。我认为这并不像比较 SQL 表中的值那么简单。我想,最好的解决方案就是跳进去尝试理解一切。我已经研究过那个链接并且很好奇它是否真的那么复杂,我猜。感谢您的回答!
    • 嗯,这并不复杂,但我可以看到“压倒性的”。当然,有很多信息需要吸收。但是,您总是可以从小处着手,然后再扩展。重点只是简单的登录,然后添加密码重置、帐户管理等。然后,您可以开始查看第三方登录和/或双因素身份验证。
    • 压倒性是一个很好的表达方式哈哈。那是我的计划,在我了解实际登录的处理方式之后,基本上开发更多的“帐户管理”类型的功能。谢谢你的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    相关资源
    最近更新 更多