ASP.NET身份认证和权限认证

public partial class admin : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
                {
                    var cookies = Request.Cookies[FormsAuthentication.FormsCookieName];
                    var ticket = FormsAuthentication.Decrypt(cookies.Value);
                    if(!string.IsNullOrEmpty(ticket.Name))
                    {
                        Response.Redirect("index.aspx");
                    }
                }
            }
            catch(Exception ex)
            {
                Response.Write(ex.Message);
            }

        }

        protected void btn_submit_Click(object sender, EventArgs e)
        {
            try {
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                    1,
                    user_name.Text.Trim(),
                    DateTime.Now,
                    DateTime.Now.AddMinutes(20),
                    true,
                    "admin",
                    "/"
                    );

                var cookie = new HttpCookie(FormsAuthentication.FormsCookieName,FormsAuthentication.Encrypt(ticket));
                cookie.HttpOnly = true;
                Response.Cookies.Add(cookie);

                Response.Redirect("index.aspx");
            }
            catch(Exception ex) {
                Response.Write(ex.Message);
            }
        }
    }

index.aspx.cs

public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                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(‘,‘);
                        //此处根据userData解决isInRole返回False的问题
                        HttpContext.Current.User = new GenericPrincipal(id, roles);

                        Response.Write("管理员" + HttpContext.Current.User.Identity.Name);
                    }

                }
                else
                {
                    Response.Redirect("admin.aspx");
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("admin.aspx");
            }

            ////try
            ////{
            ////    if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
            ////    {
            ////        var cookies = Request.Cookies[FormsAuthentication.FormsCookieName];
            ////        var ticket = FormsAuthentication.Decrypt(cookies.Value);
            ////        if (!string.IsNullOrEmpty(ticket.Name))
            ////        {
            ////            Response.Write(ticket.Name);
            ////        }
            ////        else
            ////        {
            ////            Response.Redirect("admin.aspx");
            ////        }
            ////    }
            ////    else
            ////    {
            ////        Response.Redirect("admin.aspx");
            ////    }
            ////}
            ////catch (Exception ex)
            ////{
            ////    Response.Redirect("admin.aspx");
            ////}

        }
    }
时间: 2024-10-07 05:16:25

ASP.NET身份认证和权限认证的相关文章

关于身份认证、角色认证和权限认证的shiro-web例子

shiro是Java的一个安全框架,其中认证.授权也是其核心知识.下面以一个maven构建的运用shiro框架的Web项目示例进行 分析和讲解,来理解shiro关于身份认证.和角色认证及权限认证的处理过程. 一.shiro集成web项目需配置的地方 说明:在进行如下配置之前,需建立maven管理的web项目(参考创建maven管理的web项目).这里不再赘述. 1.pom.xml文件添加shiro依赖的jar包 2.web.xml配置添加 初始化shiro环境配置 3.shiro.ini配置 二

【Shiro】Apache Shiro架构之权限认证(Authorization)

上一篇博文总结了一下Shiro中的身份认证,本文主要来总结一下Shiro中的权限认证(Authorization)功能,即授权.如下: 本文参考自Apache Shiro的官方文档:http://shiro.apache.org/authorization.html. 本文遵循以下流程:先介绍Shiro中的权限认证,再通过一个简单的实例来具体说明一下API的使用(基于maven). 1. 权限认证的核心要素 权限认证,也就是访问控制,即在应用中控制谁能访问哪些资源.在权限认证中,最核心的三个要素

asp.net权限认证:Forms认证

摘要: 明天就除夕了,闲着也是闲着,特地总结一些关于.net下的权限认证的方法. 一.Forms认证示意图 Forms认证即是表单认证,需提供身份id和密码password的进行认证和授权管理. 应该是大家比较熟悉的一种,刚接触.net可能都会学学这个东西. 下面看看他的工作方式: 二.看图太乏味,我准备了一个demo 因为默认首页为:IndexController/Index,这个页面只要一行字 “Index”, 效果图: OK,页面没有做任何权限控制,显示正常. 接下来看看DefaultCo

asp.net权限认证:摘要认证(digest authentication)

asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证:摘要认证(digest authentication) 一.摘要认证由来 摘要认证是对基本认证的改进,即是用摘要代替账户密码,从而防止明文传输中账户密码的泄露 之前对摘要认证也不是很熟悉,还得感谢圆中的 parry 贡献的博文:ASP.NET Web API(三):安全验证之使用摘要认证(dige

关于ASP.NET MVC的权限认证的一些总结

最近在学ASP.NET MVC的权限认证的一些东西,上网搜索了一阵,发现网上的方法大多数是以下几类: 一.FormsAuthentication.SetAuthCookie(admin.Name, false)或者是FormsAuthenticationTicket 感受:感觉FormsAuthentication.SetAuthCookie这种方法重在检查是否有用户登录等,需要检查权限时,要调用this.User.Identity.IsAuthenticated方法来检查是否授权等,每次要检查

asp.net权限认证篇外:集成域账号登录

在之前的我们已经讲过asp.net权限认证:Windows认证,现在我们来讲讲域账号登录, 这不是同一件事哦,windows认证更多的是对资源访问的一种权限管控,而域账号登录更多的是针对用户登录的认证,他一般与forms认证结合一起使用 demo就用之前的asp.net权限认证:Forms认证 1.改一下LoginController,如下 1 public class LoginController : Controller 2 { 3 public ActionResult Index()

[转]asp.net权限认证:HTTP基本认证(http basic)

本文转自:http://www.cnblogs.com/lanxiaoke/p/6353955.html HTTP基本认证示意图 HTTP基本认证,即http basic认证. 客户端向服务端发送一个携带基于用户名/密码的认证凭证的请求.认证凭证的格式为“{UserName}:{Password}”,并采用Base64编码,经过编码的认证凭证被存放在请求报头Authorization中,Authorization报头值类似:Basic MTIzNDU2OjEyMzQ1Ng==.服务端接收到请求之

[转]asp.net权限认证:摘要认证(digest authentication)

本文转自:http://www.cnblogs.com/lanxiaoke/p/6357501.html 摘要认证简单介绍 摘要认证是对基本认证的改进,即是用摘要代替账户密码,从而防止明文传输中账户密码的泄露 之前对摘要认证也不是很熟悉,还得感谢圆中的 parry 贡献的博文:ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication) 我是觉得真心不错,让我少走很多弯路.这篇文章主要是对上边引用文章的讲解,老司机可以略过. 老规矩,上摘认证的工作流

Asp.net身份认证记录

基础知识 身份标识在客户端主要是两个存储位置: cookie 常用 url 很少用 url作为cookie禁用的备选方案 form 几乎不用 很麻烦,每次请求都必须是form提交方式 authorization 很少用,header.authorization里面存的是base64的明文数据,不安全,一般在路由器或简单文档浏览上会用 身份认证模式,因为简单方便 普通登录,自己登录,验证授权 OAuth2.0, 一个通用的认证授权服务,主要提供给app的api.特别是对于数据访问调用的情况.例如转