自定义身份验证.Net MVC

时间:2015-11-19 09:24:21

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

我有一个网络应用程序,允许用户支付假期预订。

用户将使用唯一的预订ID和预订密码的组合登录。

有一种简单的方法可以在用户成功登录后对其进行身份验证。为此目的使用.net会话对象是否是个好主意?

应用程序不会进行负载平衡,因此我不必担心在不同的计算机上存储会话。

我不想使用.Net会员资格,因为我不想在数据库中创建任何额外的表。

2 个答案:

答案 0 :(得分:2)

如果您能够检索用户,我想这是可能的。以下是我尝试的方式:

public ActionResult UrlAuth(string bookingId, string bookingPass)
{
    var userManager=HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();

    // Retrieve the user by the give booking values (Custom part in your app
    string userId= _bookingRepository.GetUserIdByBooking(bookingId, bookinggPass);

    var user = userManager.FindById(userId);
    if (user != null)
    {
        var userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);

        HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties { IsPersistent = false }, userIdentity );

        // authentication succeed do what you want 
        return Redirect("Wherever");
    }

    ModelState.AddModelError("", "Invalid booking values");

    return View();
}

答案 1 :(得分:1)