LSJ_NHibernate
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章