zoukankan      html  css  js  c++  java
  • MVC Form认证、权限

    //一、首先是登录:
    
    public class AccountController : BaseController
    {
        public ActionResult Login()
        {
            //已经登录的,直接到默认首页
            if (HttpContext.Request.IsAuthenticated)
            {
                return Redirect(FormsAuthentication.DefaultUrl);
            }
            return View();
        }
    
        [HttpPost]
        public ActionResult Login(string userName, string userPassword, string isRemember)
        {
            if (userName == "admin" && userPassword == "111")
            {
                Person p = new Person() { Name = userName, Roles = "admin", Age = 23, Email = "xx@qq.com", Ip = MD5Helper.MD5Encrypt(Request.UserHostAddress) };
                bool remenber = isRemember == null ? false : true;
                //把用户对象保存在票据里 
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddTicks(FormsAuthentication.Timeout.Ticks), remenber, p.ObjToJson());
                //加密票据
                string hashTicket = FormsAuthentication.Encrypt(ticket);
                HttpCookie userCookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);
                if (remenber)
                {
                    userCookie.Expires = DateTime.Now.AddTicks(FormsAuthentication.Timeout.Ticks);
                }
                Response.Cookies.Add(userCookie);
    
                string returnUrl = HttpUtility.UrlDecode(Request["ReturnUrl"]);
                if (string.IsNullOrEmpty(returnUrl))
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    return Redirect(returnUrl);
                }
            }
            else
            {
                ViewData["Tip"] = "用户名或密码有误!";
                return View();
            }
        }
        public ActionResult Logout()
        {
            //取消Session会话 
            Session.Abandon();
            //删除Forms验证票证 
            FormsAuthentication.SignOut();
            return RedirectToAction("Login", "Account");
        }
    }
    
    //二、权限验证 
     public class AuthAttribute : AuthorizeAttribute
        {
    
            /// <summary>
            /// 验证核心代码
            /// </summary>
            /// <param name="httpContext"></param>
            /// <returns></returns>
            protected override bool AuthorizeCore(HttpContextBase httpContext)
            {
                return string.IsNullOrEmpty(UserInfo.UserID) == false;
            }
            /// <summary>
            /// 验证失败处理
            /// </summary>
            /// <param name="filterContext"></param>
            protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
            {
                if (filterContext.HttpContext.Request.IsAjaxRequest())
                {
                    JsonResult json = new JsonResult();
                    json.Data = new { Status = 401, Message = "权限不足,服务器已拒绝您的操作!" };
                    json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                    filterContext.Result = json;
                }
                else
                {
                    UrlHelper url = new UrlHelper(filterContext.RequestContext);
                    filterContext.Result = new BaseController().PageReturn("请先登录!", PubLib.PublicVars.GetNewURL(url.Action("Login", "StuEnroll")));
                }
                return;
            }
        }
  • 相关阅读:
    【BZOJ1010】【HNOI2008】玩具装箱
    【BZOJ1009】【HNOI2008】GT考试
    【BZOJ1008】【HNOI2008】越狱
    【BZOJ1007】【HNOI2008】水平可见直线
    【BZOJ1006】【HNOI2008】神奇的国度
    (考研)生产者消费者问题(赋代码)
    (考研)(精华)二叉树的知识结构图以及各种特殊的二叉树
    二叉树新的一种新建思路和遍历思路
    (简单但不容易写全对)逆置数组
    (经典)二叉树的层次遍历和快速排序
  • 原文地址:https://www.cnblogs.com/5tomorrow/p/4108370.html
Copyright © 2011-2022 走看看