• ASP.NET MVC学习笔记(二)登陆验证


    书上的验证时在配置文件中直接声明用户名和密码,想改成从数据验证账号和密码,搞了一下午都没高出来,不断的调试,发现

    var table = userInfo.Tables.FirstOrDefault(x => x.Name == user.Name);

    这句代码有问题,一直时Null,各种百度无法解决,就把它转成userInfo.Tables.AsQueryable();了。完美解决了

    控制器代码

     public class AccountController : Controller
        {
            IAuthProvider authProvider;
            ITaableInfo userInfo;
            public AccountController(IAuthProvider autho,ITaableInfo info)
            {
                authProvider = autho;
                //获得用户数据
                userInfo = info;
                //EFDbcontext context = new EFDbcontext();
                //context.SaveChanges();
            }
            public ViewResult Login2()
            {
                return View();
            }
            //[HttpPost]
            //public ActionResult Login(LoginViewModel model, string returnUrl)
            //{
            //    if (ModelState.IsValid)
            //    {
    
    
            //        if (authProvider.Authenticate(model.Name, model.PassWord))
            //        {
            //            return Redirect(returnUrl ?? Url.Action("Index", "Admin"));
            //        }
            //        else
            //        {
            //            ModelState.AddModelError("", "Incorrect userName,passWord");
            //            return View();
            //        }
    
            //    }
            //    else
            //    {
            //        return View();
            //    }
            //}
            [HttpPost]
            public ActionResult Login2(Admin user, string returnUrl)
            {
    
                //foreach (var B in userInfo.Tables)
                //{
                //    string str = B.Name;
                //}
                string name = user.Name;
                string pwd = user.PassWord;
                //var table = userInfo.Tables.FirstOrDefault(x => x.Name == user.Name);
                var table = userInfo.Tables.AsQueryable();
               var info= table.FirstOrDefault(x => x.Name == user.Name);
                if (info != null)
                {
                 //string  url=  Url.Action("Index", "Admin").ToString();
                    FormsAuthentication.SetAuthCookie(info.Name, false);
                    //重新定向到Admin/Index页面
                    return Redirect(returnUrl??Url.Action("Index","Admin"));
                }
                else
                {
                    return View();
                }
            }
        }

    html代码

    @model SpotrsStore.Domain.Entities.Admin
    
    @{
        ViewBag.Title = "Login2";
        Layout = "~/Views/Shared/_AdminLayout.cshtml";
    }
    
    <div class="panel">
        <div class="panel-heading">
            <h3>log in</h3>
        </div>
        <div class="panel-body">
            <p class="lead">please log in access the administrator area</p>
            @using (Html.BeginForm())
            {
                Html.ValidationSummary();
                <div class="form-group">
                    <label>username</label>
                    @Html.TextBoxFor(x => x.Name, new { @class = "form-control" })
                </div>
                <div class="form-group">
                    <label>password</label>
                    @Html.PasswordFor(x => x.PassWord, new { @class = "form-control" })
    
                </div>
                <input type="submit" value="log in" class="btn btn-primary" />
    
            }
        </div>
    </div>

    配置文件代码

    <authentication mode="Forms">
          <forms loginUrl="~/Account/Login2"></forms>
        </authentication>

    重新的定向的的页面的控制器要加 [Authorize]//授权属性,加在类名上面或动作方法上面视情况所选择

  • 相关阅读:
    嵌入式开发之基于模型的设计思想
    tslib库的移植以及"selected device is not a touchscreen I understand"问题解决
    rocketMq broker.conf全部参数解释
    rocketMq 消息偏移量 Offset
    3、验证,数据绑定和类型转换
    2、springframe Resources
    1、Spring Framework 5.0简述
    POI导出Excel时下拉列表值超过255的问题(String literals in formulas can't be bigger than 255 characters ASCII)
    rocketMq console MQClientException异常
    25. Secure Object Implementations(安全对象实现)
  • 原文地址:https://www.cnblogs.com/wscar/p/6445756.html
Copyright © 2020-2023  润新知