MVC 5自定义身份验证

时间:2014-09-22 01:40:40

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

我有一个遗留应用程序,我们正在转换为使用MVC 5应用程序模板。我们有一个自定义API方法,为了让示例简单,我们只是说它的签名是:

bool Login(username, password);

如何将用户设置为已登录,以便我可以使用[Authorize]属性之类的内容?目前我们希望最简单的方法可以让我们开始开发网站。

我尝试实施this手动设置User.Identity。但是随后每次请求都会重置它。

1 个答案:

答案 0 :(得分:0)

最后,我将逻辑提取到Account控制器。这将处理Login并将结果存储在Session中。然后我只需要覆盖System.Web.Mvc.AuthorizeAttribute类和AuthoriseCore方法,如下所示:

using System.Web;
using System.Web.Mvc;

namespace HomeHealth.Web.Infrastructure
{
    public class HomeHealthAuthorizeAttribute : AuthorizeAttribute
    {

        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            return WebSession.SdkContext.IsAuthenticated;
        }

    }
}

它有一些帮助代码来清理从会话中访问Context,但这是无关紧要的。关键是这是你可能想要的属性/方法。然后,您可以使用以下内容标记控制器/方法:

[HomeHealthAuthorize]
public class PatientController : BaseController

然后为您完成所有检查/重定向。