【问题标题】:ASP.NET MVC forms authentication equivalentASP.NET MVC 表单身份验证等效项
【发布时间】:2013-12-23 14:55:34
【问题描述】:

当我编写 ASP.NET 应用程序时,我将表单身份验证与我的自定义登录页面一起使用,如下所示:

一旦登录成功,我就会检查他是否已通过身份验证:

FormsAuthentication.RedirectFromLoginPage(userId.ToString(), true);

为了检查用户是否登录,我有一个继承自基页面的类和继承自它的所有页面,其中包含一个在检查用户是否经过身份验证后返回布尔值的方法,具有以下内容命令:

return HttpContext.Current.User.Identity.IsAuthenticated;

现在,我正在做一个 ASP.NET MVC 应用程序,并且想知道在 MVC 上最好的方法是什么?

谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    ok MVC 很简单,类似

    对于您的问题,您可以使用 .......

    在你的控制器中

    public ActionResult LogOn()

        {
            return View();
        }
    
        //
        // POST: /Account/LogOn
    
        [HttpPost]
        public ActionResult LogOn(LogOnModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var userInfo = new UserInfo()
                {
                    UserName = model.UserName,
                    Password = model.Password,
                };
    
                var service = new CSVService();
                if(service.ValidateUser(userInfo))
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                    {
                        return Redirect(returnUrl);
                    }
                    else
                    {
                        return Redirect("~/");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "The user name or password provided is incorrect.");
                }
            }
    
            // If we got this far, something failed, redisplay form
            return View(model);
        }
    

    【讨论】:

    • 谢谢。它是否有某种属性可以放在 ActionResult 之前,所以只有允许的用户才能查看它?
    • 好的,你可以使用权限表,根据权限和角色权限,你可以将权限应用到特定用户
    【解决方案2】:

    验证网站/网络应用程序的最佳方式是使用 Microsoft 为 Easy-ness 内置的 Membership。

    从这里你可以做以下事情(功能)

    • 它保持登录状态(您不必担心身份验证)。

    • 它允许提供角色和用户以及分配权限谁可以看到哪个页面 (页面限制)

    • 它提供内置的存储过程和 UI 工具,如登录、注销、用户、密码恢复等元素。 & 高度安全(防黑客攻击)

    更多信息:

    Walk through Membership (MSDN)

    【讨论】:

    • 我在 youtube 上看到了一个关于这个的教程 - 它会创建另一个数据库吗?
    • 是的,但它是完全加密的,您只能调用预定义的存储过程,为了限制特定用户/特定浏览器的页面,您需要使用 Project Tab->ASP.NET Configurations 中的管理工具(此管理工具修改 web.config 文件)这将提供和设置权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2010-09-24
    相关资源
    最近更新 更多