zoukankan      html  css  js  c++  java
  • ASP.NET中获取当前用户ID 用户名 用户角色 用户IP地址

    如果VS2005及VS2008中使用菜单【网站】|【ASP.NET配置】进入使用网站管理工具(WAT)的表单验证(Forms验证)方式来建立网站数据库,默认数据库名为ASPNETDB.MDF。系统将会自动建立一套系统数据表(VS2008中为11个这样的数据表),利用这个系统数据表可以快捷地进行创建新用户、角色、用户登录、修改用户口令等开发。
    在后续开发过程中,需要反复使用用户ID、判断用户是否为登录用户或者是否为某一角色,这些常用操作如下:
    1、获取当前登录用户ID
    Membership.GetUser().ProviderUserKey;
    上语句可用来获取当前登录用户的ID,在使用时注意调用System.Web.Security命名空间,只有这样才可以使用MemberShip。如:
     
    using System.Web.Security;
        protected void dvNewPost_ItemInserting(object sender, DetailsViewInsertEventArgs e)
        {
            e.Values["UserId"] = Membership.GetUser().ProviderUserKey;
     
        }
        上例的意思是将当前登录用户的ID插入到最新的记录中。
     
        2、判断用户是不是登录
        使用User.Identity.IsAuthenticated,该值是一个布尔值,如果用户已经登录(即通过身份验证),该值为true,否则为false。如:
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.Identity.IsAuthenticated)
                Response.Redirect("Index.aspx");
        }
        上例的意思是如果用户没有登录(!User.Identity.IsAuthenticated = true, 注意前边有Not运算符!),则重定向到主页Index.aspx,即用户无法进入本页面。如果用户为登录用户,则本代码不执行,进入本页面。
     
        3、判断用户是不是某角色用户
        使用User.IsInRole("Admin")。User.IsInRole("Admin")是一个布尔值,如果用户是Admin角色,则返回true,否则返回false。如:
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.IsInRole("Admin"))
                Response.Redirect("Index.aspx");
        }
        上例是一个网站管理员(Admin角色)专用页面的page_load事件。如果用户是网站管理员,则不执行代码,直接进入本网站管理员专用页面。如果用户不是网站管理员,则重定向到主页Index.aspx,无法进入本网站管理员专用页面。
     
        4、当前登录用户的用户名
        使用HttpContext.Current.User.Identity.Name获取
        比如设置一个属性,获取当前用户名
         public string CurrentUserName
        {
            get
            {
                string userName = "";
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                    userName = HttpContext.Current.User.Identity.Name;
                return userName;
            }
        }
      
        4、当前登录用户的IP地址
        使用HttpContext.Request.UserHostAddress获取
     

  • 相关阅读:
    海量文档查同或聚类问题 Locality Sensitive Hash 算法
    Python之道 (大道至简)
    Inside C++ object Model构造函数
    Python标准模块logging
    Inside C++ object Model多态(ObjectOriented)
    应用Notepad++的正则表达式完成较复杂替换的一个小例子
    维护FAST可用的一些命令 持续更新
    SharePoint List的List Template ID明细表
    SharePoint 2010 Incoming Email怎么配?
    使用ContentDeploymentJob.AddQuickDeployObject的时候, 请注意第三个参数一定要使用Server Relative URL
  • 原文地址:https://www.cnblogs.com/wusir/p/3091715.html
Copyright © 2011-2022 走看看