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")]进行验证了。
  • 相关阅读:
    批处理
    使用T-SQL语句更新数据、删除
    使用T-SQL语句一次性插入另一张表的数据
    使用T-SQL语句插入数据
    CSS色调旋转滤镜
    初探Lerna
    基层管理人员的部分思考 --读《大秦帝国》有感
    (转)React学习笔记(干货满满)
    git常用命令(转)
    个人JS体系整理(三)
  • 原文地址:https://www.cnblogs.com/wangjq/p/1977205.html
Copyright © 2011-2022 走看看