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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构