0

所以我开始使用模板在 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 等设置数据库,但恐怕这是我的外部数据库的等价物。

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

除此之外,我不知道该去哪里。如果有人至少可以为我指明一个好的方向,我将不胜感激。

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

4

2 回答 2

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

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

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

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

于 2013-02-22T11:47:17.620 回答
0

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

于 2013-02-22T14:16:04.967 回答