Asp.net mvc 4 如何设置登录?表单身份验证

Asp.net mvc 4 如何设置登录?表单身份验证,asp.net-mvc-4,forms-authentication,Asp.net Mvc 4,Forms Authentication,所以我开始用MVC4建立一个带有模板的网站,一切都很顺利。但是,我觉得模板中已经添加了很多我一点也不了解的功能,因此正确使用其中一些功能是一个挑战。登录系统就是这样一个功能 现在,我成功地设置并与外部数据库进行了交谈,没有遇到很多麻烦,但我完全不知道模板如何知道用户名以及他是否登录 if (Request.IsAuthenticated) { // Lets us know if the Request is authenticated }

所以我开始用MVC4建立一个带有模板的网站,一切都很顺利。但是,我觉得模板中已经添加了很多我一点也不了解的功能,因此正确使用其中一些功能是一个挑战。登录系统就是这样一个功能

现在,我成功地设置并与外部数据库进行了交谈,没有遇到很多麻烦,但我完全不知道模板如何知道用户名以及他是否登录

if (Request.IsAuthenticated)
        {
            // Lets us know if the Request is authenticated
        }
因此,我试图重新创建/设置相同的功能,但从头开始,这样我就可以了解它实际上是如何工作的。话虽如此。。。我迷路了

[AllowAnonymous]
 public ActionResult Login(LoginModel model)
 {
     try
     {
         var canLogin = Services.Login(model.Username, model.Password);
         var cas = Services.CheckAcountStatus(canLogin.Token);

         if (cas.Payload.Items.Exists(m => !m.IsSynchronized)) RedirectToAction("VerifyPin", "Account", cas.Payload);

         return RedirectToAction("Index", "MyPage");
     }
     catch (CustomException ase)
     {
          ModelState.AddModelError("", ErrorCodeToString(ase.Error));
     }

      return View(model);
 }
这就是我到目前为止所做的

<authentication mode="Forms">
    <forms name="MyName" loginUrl="~/Account/Login" timeout="30" />
</authentication>

很多例子都解释了如何使用EF等建立数据库,但恐怕这与我的外部数据库是等价的

是否真的需要数据库来了解用户是否登录?还是仅仅是一块饼干

除此之外,我不知道该去哪里。如果有人能给我指出一个好的方向,我会很感激的

最后,我唯一真正的目标是在用户登录的页面之间提供一种简单的通信方式

if (Request.IsAuthenticated)
        {
            // Lets us know if the Request is authenticated
        }
一个简单的答案是:“最终,我唯一真正的目标是在用户登录的页面之间提供一种简单的通信方式。”

我建议您阅读web.config中表单身份验证的配置选项,并研究表单身份验证票证的内部工作原理。MVC还具有您可以使用的Authorize属性


ASP.NET MVC 4引入了一个名为SimpleMemberhsip的新成员资格提供程序,它非常灵活且易于使用。下面是一个示例,它可能是您最好的方法,而不是尝试从头构建一个与ASP.NET表单身份验证兼容的安全框架。表单身份验证依赖于cookies来判断用户是否跨页面登录。我在您的代码示例中没有看到任何处理cookies的内容。如果您查看由Internet模板生成的登录方法,您将看到该方法WebSecurity.Login不仅处理对用户的身份验证,还处理cookie的生成。

经过更好的搜索,我已成功创建了一个新的自定义授权属性,该属性与FormsAuthentication一起满足了我的需要。