• 权限验证MVC


    http://www.jb51.net/article/20147.htm  引用

    <authentication mode="Forms"><!--权限受到阻碍将会跳转到这个页面,不写找不到的时候则报404-->
    <forms loginUrl="~/ExcelEport/Login" timeout="2880" />
    </authentication>

    // [Authorize(Roles = "Admin")]//只有通过用户才可以访问该方法
    public ActionResult likJinbulai()//你要设置权限的页面
    {
    //判断通过身份验证的用户是否有权限访问本页面
    FormsIdentity id = (FormsIdentity)HttpContext.User.Identity;
    //判断通过身份验证的用户是否是Admin角色
    if (id.Ticket.UserData.Contains("Admin"))
    {
    return View();
    //跳转到访问权限不够的错误提示页面
    }

    else
    {
    ViewBag.Authorize = false;
    return View("youjinbulai");
    //从哪里来回哪里去,在湖区的页面添加以下代码
    //@if (@ViewBag.Authorize!=null)
    //{
    // if (!(@ViewBag.Authorize) )
    // {
    // <script type="text/javascript">
    // $(function () {
    // alert("您没有权限");
    // });
    // </script>
    // }
    //}
    }


    }

    ///登陆用户处理Action

    public ActionResult LoginHandler(string userName, string userPwd,string role)
    {
    //mvc
    ////该用户通过验证后,会得到数据库字段Roles
    ////验证成功直接写入客户端cookie票据
    //FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
    //1,
    //userName,//用户登陆进来的用户名
    //DateTime.Now,
    //DateTime.Now.AddMinutes(20),
    //true,//是否存在持久,存储在客户端
    //role//登陆用户的角色写入登陆用户的角色
    //);
    ////加密身份验证票据
    //string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
    ////把准备好的cookie加入到响应流中
    //System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
    //authCookie.Expires = authTicket.Expiration;//票据过期时间
    ////把准备好的cookie加入到响应流中
    //System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);


    //web
    //Forms身份验证初始化
    FormsAuthentication.Initialize();
    //验证用户输入并得到登录用户,txtName是用户名称,txtPassword是登录密码
    //UserModel um = ValidUser(txtName.Text.Trim(), txtPassword.Text.Trim());

    //创建身份验证票据
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
    userName,
    DateTime.Now,
    DateTime.Now.AddMinutes(30),
    true,
    role,//用户所属的角色字符串
    FormsAuthentication.FormsCookiePath);
    //加密身份验证票据
    string hash = FormsAuthentication.Encrypt(ticket);
    //创建要发送到客户端的cookie
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
    if (ticket.IsPersistent)
    {
    cookie.Expires = ticket.Expiration;
    }
    //把准备好的cookie加入到响应流中
    Response.Cookies.Add(cookie);

    //转发到请求的页面
    //Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, false));
    return View("youjinbulai");
    }


    //注销票据 
    public ActionResult ClearTicket()
    {
    //注销票据
    FormsAuthentication.SignOut();
    string script = "alert('您已经安全退出了!');";
    return JavaScript(script);
    }

    //以下写在Global.asax

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
    //mvc
    //HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
    //if (authCookie == null || authCookie.Value == "")
    //{
    // return;
    //}
    //FormsAuthenticationTicket authTicket = null;
    //try
    //{
    // authTicket = FormsAuthentication.Decrypt(authCookie.Value);
    //}
    //catch
    //{
    // return;
    //}
    //string[] roles = authTicket.UserData.Split(new char[] { ';' });
    //if (Context.User != null)
    //{
    // Context.User = new System.Security.Principal.GenericPrincipal(Context.User.Identity, roles);
    //}
    //webform
    if (HttpContext.Current.User != null)
    {
    if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
    if (HttpContext.Current.User.Identity is FormsIdentity)
    {
    FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
    FormsAuthenticationTicket ticket = id.Ticket;

    string userData = ticket.UserData;
    string[] roles = userData.Split(',');
    //重建HttpContext.Current.User,加入用户拥有的角色数组
    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
    }
    }
    }
    }

  • 相关阅读:
    IOS学习笔记 ---- 15/09/14
    IOS学习笔记 ---- 15/09/07
    IOS学习笔记 ---- 15/09/06
    IOS学习笔记 ---- 15/09/02
    IOS学习笔记 ---- 15/09/01
    IOS学习笔记 ---- 15/08/31
    IOS学习笔记 ---- 15/08/30之前
    ios之UITableViewController(二) tableView的编辑模式
    ios之UIPageController和UIScrollView配合使用
    ios之UIScrollView
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4577252.html
Copyright © 2020-2023  润新知