zoukankan      html  css  js  c++  java
  • 带有角色信息的FormsAuthentication身份验证

    步骤:

    1. 登录时手动设置FormsAuthenticationTicket,代码如下:

     // 可手动添加FormsAuthenticationTicket
    FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, "username", DateTime.Now, DateTime.Now.AddMinutes(20), false, "admin");
    // 加密
     string HashTicket = FormsAuthentication.Encrypt(Ticket);
    // 生成cookie
    HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket); 
    // 身份验证票Cookie输出到客户端
    Response.Cookies.Add(UserCookie);

    2.在Global中增加以下代码:

         protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
    //Construst the GeneralPrincipal and FormsIdentity objects
    HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];

    if (null == authCookie)
    {
    //no authentication cokie present
    return;
    }

    FormsAuthenticationTicket authTicket
    = FormsAuthentication.Decrypt(authCookie.Value);

    if (null == authTicket)
    {
    //could not decrypt cookie
    return;
    }

    //get the role
    string[] role = authTicket.UserData.Split(new char[] { ',' });
    FormsIdentity id
    = new FormsIdentity(authTicket);

    Context.User
    = new GenericPrincipal(id, role);
    }

    这样,我们在程序中就可以使用[Authorize(Roles="admin")]进行验证了。
  • 相关阅读:
    iOS开发之WIFI,3G/4G两种网络同时使用技巧
    UIScreen的scale属性
    iOS开发中的Self-Manager 模式
    iOS UICollectionView简单使用
    Size Classes with Xcode 6
    SizeClass介绍
    AutoLayout处理UITableView动态高度
    在Scrollview中使用AutoLayout
    hashmap与hashtable的本质区别
    MySQL的5大引擎及优劣之分
  • 原文地址:https://www.cnblogs.com/wangjq/p/1977205.html
Copyright © 2011-2022 走看看