• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NETMVC项目演练:用户登录

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

ASP.NET MVC 基础入门 http://www.cnblogs.com/liunlls/p/aspnetmvc_gettingstarted.html

设置默认启动页面

    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
            );
        }
    }

设置重定向配置(没有登录的匿名用户将重定向到配置的地址)

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880"></forms>
    </authentication>

设置控制器过滤器;Authorize特性也可以只设置方法;下面的代码中,如果用户没有登录,请求Home/UserCenter话会被定向到登录界面(Account/Login)

    //Authorize,过滤器(filter),禁止匿名访问
    [Authorize]
    public class HomeController : Controller
    {
        //允许匿名用户访问
        [AllowAnonymous]
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult UserCenter()
        {
            return View();
        }
    }

登录数据模型,用的是VS自动生成的,可以根据自己的需求定制,包括数据验证特性,可参考http://www.cnblogs.com/liunlls/p/aspnet_mvc_adding_validation.html

    public class LoginViewModel
    {
        [Required]
        [Display(Name = "账号")]
        public string Account { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

        [Display(Name = "记住我?")]
        public bool RememberMe { get; set; }
    }

登录方法

        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }
            //验证账号密码
            if (model.Account.Equals("admin") && model.Password.Equals("123456"))
            {
               
                string userData = new JavaScriptSerializer().Serialize(model);
                //验证票据
                var ticket = new FormsAuthenticationTicket(1, model.Account, DateTime.Now,DateTime.Now.AddDays(COOKIE_EXPIRES), false, userData, FormsAuthentication.FormsCookiePath);
                //加密
                string encrypt = FormsAuthentication.Encrypt(ticket);
                var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypt);
                if (model.RememberMe)
                {
                    cookie.Expires = DateTime.Now.AddDays(COOKIE_EXPIRES);
                }
                //保存cookie
                Response.Cookies.Remove(cookie.Name);
                Response.Cookies.Add(cookie);

                if (string.IsNullOrEmpty(returnUrl))
                {
                    
                    return RedirectToAction("Index","Home");
                }
                else
                    return Redirect(returnUrl);
            }
            else
            {
                ModelState.AddModelError("", "无效的登录尝试。");
                return View(model);
            }
        }

注销用户方法

        public ActionResult LoginOut()
        {
            FormsAuthentication.SignOut();
            return Redirect(FormsAuthentication.LoginUrl);
        }

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net方面的项目毕业设计请联系QQ443280762发布时间:2022-07-10
下一篇:
中文ASP.NET快速入门教材发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap