如何设置登录?表单身份验证

时间:2013-02-22 06:22:35

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

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

现在我设法设置并与我的外部数据库交谈而没有太多麻烦,但我完全失去了模板如何知道用户名并且他已登录。

所以我试图重新创建/设置相同的功能,但从头开始,所以我可以理解它是如何工作的。那就是说......我迷路了!

[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等设置数据库的解释,但我担心这是我的外部数据库的等价物。

数据库是否真的需要知道用户是否已登录?或者它只是一个饼干?

除此之外,我不知道去哪里。如果有人能够至少指出我的方向,我会很感激。

最后,我唯一真正的目标是在用户登录的页面之间进行简单的通信。

2 个答案:

答案 0 :(得分:0)

if (Request.IsAuthenticated)
        {
            // Lets us know if the Request is authenticated
        }

一个简单的答案:“最后,我唯一真正的目标是在用户登录的页面之间进行简单的通信。”

我建议在web.config中阅读有关表单身份验证的配置选项,以及研究formsauthentication票证的内部工作方式。 MVC还具有您可以使用的授权属性。

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.108).aspx

答案 1 :(得分:0)

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