首页 > 代码库 > LSJ_NHibernate(二)

LSJ_NHibernate(二)

后台采用的是MVC 4.0

技术分享

普普通通的一个MVC项目,前端使用的是H+框架,先来做第一个功能,登录

1.先把示例页面套上,看这舒服

技术分享

这个非空验证,最开始我以为是jquery.validate.js里的,后来测试发现是H5自带的,它可以自动定位到input,非常的友好.

技术分享

登录的加载动画采用的是svgloader.js效果看着还行,如果后台执行过快,就会看到一闪而逝的效果,加载动画也可以换成一张动图,固定位置,通过Ajax.Beginform的LoadingElementId控制显示隐藏

2.当用户提交提交登录后,就要考虑用什么保存用户登录凭证,常用的有cookie或者session,forms,我这里使用的是forms表单验证

     /// <summary>
        /// 普通登录
        /// </summary>
        /// <param name="username"></param>
        /// <param name="userpwd"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult login(string un, string pwd, string returnUrl)
        {
            HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
            Common.Json json = new Common.Json();
            DAO.BLL.B_Users b_user = new DAO.BLL.B_Users();
            var m_user = new Domain.Users();
            if (ModelState.IsValid)
            {
                m_user = b_user.Login(un, pwd);
                if (m_user != null)
                {
                    FormsAuthentication.SetAuthCookie(m_user.user_name, true);
                    if (!String.IsNullOrEmpty(returnUrl))
                    {
                        json.returnUrl = returnUrl;
                    }
                    else
                    {
                        json.returnUrl = "/home/index";
                    }
                }
                else
                {

                    json.msg = "用户名或密码不正确!";
                    json.status = -1;
                }
            }

            return Json(json);
        }

验证登录成功后,只需要一句代码就保存好了,由于是forms验证,此时匿名用户是无法访问服务器上的资源的,包括css img js....所以我们必须把这样资源设置成忽略

技术分享

有些对权限比较严格的,可以指点让某个用户访问,或者某个组的用户访问

     //可以指点让某个用户访问,或者某个组的用户访问
        //[Authorize(Users = "?")]  
        public ActionResult Index()
        {
            var name = User.Identity.Name;
            return View();
        }

修改Gloabl文件,如下

public class MvcApplication : System.Web.HttpApplication
    {
        public MvcApplication()
        {
            AuthorizeRequest += new EventHandler(MvcApplication_AuthorizeRequest);
        }

        void MvcApplication_AuthorizeRequest(object sender, EventArgs e)
        {
            IIdentity id = Context.User.Identity;
            if (id.IsAuthenticated)
            {

                var roles = new DAO.BLL.B_Users().GetRoles(id.Name);
                Context.User = new GenericPrincipal(id, roles);
            }
        }

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

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);
        }
    }

目前此项目还没有用到,我们只用考虑是否用用户登录成功即可,权限有专门的权限系统去处理.

 

LSJ_NHibernate(二)