【问题标题】:ASP.NET Custom authentication without a store没有商店的 ASP.NET 自定义身份验证
【发布时间】:2015-03-24 13:40:01
【问题描述】:

我的团队目前在项目中使用 WebForms,但我正试图说服所有人改用 MVC。我遇到的问题之一是身份验证。我不知道如何实现我们的登录过程以使用 MVC。

我们的身份验证主要通过网络服务完成(我们传递用户名和密码并被告知其是否有效),但有时我们使用 ActiveDirectory 进行登录。

现在我们正在使用 sessionstate 来存储有关已登录人员的信息。我将如何将其转换为 ASP.NET MVC?我已经阅读了很多关于各种内容的内容——Claims、Roles、MembershipProvider、IProvider、ASP.NET Identity、OWIN,但是 ASP.NET 的发展如此之快,以至于我担心我正在阅读有关 StackOverflow 的旧信息。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5


    【解决方案1】:

    现在我们正在使用 sessionstate 来存储有关登录人员的信息。

    不要这样做。曾经。不在 WebForms 或 MVC 中。它非常不安全并且很容易被欺骗。 Session 永远不应该用于与身份验证或授权有关的任何事情。此外,Sessionstate 是易变的,IIS 可以随时转储您的会话,从而与您的身份验证失去同步。

    您的问题的解决方案非常简单。您已经在您的 Web 服务中进行了身份验证(尽管我怀疑这是否安全,考虑到您的 Sessionstate 身份验证方法,但这是一个不同的论点)。您只需要 Authentication 部分,FormsAuthentication 很容易提供它来设置 cookie 以允许登录。

    你验证你的服务,如果你成功,你调用FormsAuthentication.SetCookie(),然后你将[Authorize]添加到你想要保护的所有MVC操作方法中。就是这么简单。

    如果您需要有关用户的可用信息,那么您将创建一个提供该信息的自定义 IIdentity 和/或 IPrincipal 实现,使其安全(由加密的 cookie 保护)并且易于访问。

    【讨论】:

    • 太棒了,谢谢!如果我没有得到答案,这就是我要做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多