MVC项目开发中那些用到的知识点(登录权限认证)

     话说从开始接触MVC到现在也有一段时间了,记得好像是从2012年8月初开始做项目的。就记录一下自己所用到的且认为重要的知识点吧。

首先做的便是一个登录,那么就用到了登录权限认证:

    public class UserAuthentication : AuthorizeAttribute
    {
        public UserToUrlEnum UserToUrlEnum { get; set; }

        public UserAuthentication()
        {
            this.UserToUrlEnum = UserToUrlEnum.Login;
        }
        /// <summary>
        /// 视图响应前执行验证,查看当前用户是否有效
        /// </summary>
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            if (filterContext.HttpContext.Session.IsNewSession && string.IsNullOrEmpty(HttpContext.Current.User.Identity.Name))
            {
                switch (this.UserToUrlEnum)
                {
                    case UserToUrlEnum.Login:
                        {
                            HttpContext.Current.Response.Redirect("~/Account/Login"
                                , true);
                        }
                        break;
                }
            }
        }
    }

此类首先有继承AuthorizeAttribute,重载OnAuthorization此方法,以便与在每次触发Action之前调用此方法,检验是否已经登录以及用户是否已经过期。如果过期或者没登录,那么就会自动返回到登录页面,要求登录。

刚刚说到了每次触发Action之前调用OnAuthorization此方法,那么如何触发呢:

        [UserAuthentication]
        public ActionResult RoleManagerPage()
        {
            return View();
        }

只需要在要检验的Action前加上该属性标识即可。也可以加到整个控制器上面。代码如下

    [UserAuthentication]
    public class SystemManagerController : Controller

那么此控制器下的每个Action在执行的时候都会做用户登录权限的认证。

用户如果没有登录,而是通过Url直接访问,那么就会跳转到登录页面,要求登录;或者用户长时间无操作,那么之前登录的用户将会过期,同样会跳转到登录页面。

当然还要在配置文件System.Web节点下添加  

  <authentication mode="Forms">       <forms loginUrl="~/Account/Login" protection="All" timeout="30" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/Home/Index" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>     </authentication>

posted @ 2013-03-26 09:01  aehyok  阅读(2146)  评论(1编辑  收藏  举报