membership 常用的操作

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.Current.Request.UserHostAddress获取


进入用户后台
FormsAuthentication.SetAuthCookie(strUserName, false);
Response.Redirect("../member/index.aspx", true);


获取用户的Profile和Membership信息

MembershipUser mu = Membership.GetUser(strUserName);
ProfileCommon p = Profile.GetProfile(strUserName);


修改用户的Profile信息

ProfileCommon p = Profile.GetProfile(strUserName);
p.MemberInfo.Name = trueName.Text;
p.Save();


修改用户密码

如果已知旧密码可用changepassword控件修改
如果不知道旧密码,又不需要RequiresQuestionAndAnswer,先在web.config中把Membership Provider的EnablePasswordReset设为"true",然后使用:
MembershipUser mu = Membership.GetUser(strUserName);
mu.ChangePassword(mu.ResetPassword(), tbPsw.Text);
即可修改密码


解除用户锁定

使用MembershipUser的UnlockUser方法可以解除锁定:
MembershipUser mu = Membership.GetUser(strUserName);
if (mu.IsLockedOut) mu.UnlockUser();
注意与IsApproved的区别,锁定是由用户错误操作造成,没有提供设置锁定的方法


设置用户状态

通过MembershipUser的IsApproved属性来设置:
MembershipUser mu = Membership.GetUser(strMember);
mu.IsApproved = true;//根据实际情况设置true或false
Membership.UpdateUser(mu);//需要手动更新数据库


角色

System.Web.Security.Roles

http://www.cnblogs.com/lvfei/archive/2010/03/04/1678656.html

if (!Roles.IsUserInRole("Administrator"))
{    throw new System.Security.SecurityException("对不起,你没有权限!");
}

membership 类创建用户 及 返回状态(MembershipCreateStatus)    

使用membership创建用户是很方便的,可以使用MembershipCreateStatus来查看创建的结果

创建用户的语法:

         MembershipCreateStatus CreatStatude;

         Membership.CreateUser(UserName, pwd, EMail, “密码提示", "密码提示答案", true, out CreatStatude);

其中MembershipCreateStatus枚举分别由以下成员

                                    成员名称            说明                                        DuplicateEmail            电子邮件地址已存在于应用程序的数据库中。                                         DuplicateProviderUserKey            提供程序用户键值已存在于应用程序的数据库中。                                         DuplicateUserName            用户名已存在于应用程序的数据库中。                                         InvalidAnswer            密码提示问题答案的格式设置不正确。                                         InvalidEmail            电子邮件地址的格式设置不正确。                                         InvalidPassword            密码的格式设置不正确。                                         InvalidProviderUserKey            提供程序用户键值的类型或格式无效。                                         InvalidQuestion            密码提示问题的格式设置不正确。                                         InvalidUserName            在数据库中未找到用户名。                                         ProviderError            提供程序返回一个未由其他 MembershipCreateStatus 枚举值描述的错误。                                         Success            创建用户成功。                                         UserRejected            因为提供程序定义的某个原因而未创建用户。            

可以采用这样的语句来检查返回值状态

switch (CreatStatude)
             {
                 case MembershipCreateStatus.DuplicateUserName:
                     CreatMessage="用户已经存在,请重新选择用户名";
                     break;

                 case MembershipCreateStatus.DuplicateEmail:
                     CreatMessage = "该邮件地址已经注册,请重新填写邮件地址";
                     break;
                 case MembershipCreateStatus.InvalidPassword:
                     CreatMessage = "密码的格式设置不正确";
                     break;
                 case MembershipCreateStatus.InvalidEmail:
                     CreatMessage = "电子邮件地址的格式设置不正确";
                     break;
                 case MembershipCreateStatus.InvalidAnswer:
                     CreatMessage = "密码提示问题答案的格式设置不正确";
                     break;
                 case MembershipCreateStatus.InvalidQuestion:
                     CreatMessage = "密码提示问题的格式设置不正确";
                     break;
                 case MembershipCreateStatus.InvalidUserName:
                     CreatMessage = "在数据库中未找到用户名";
                     break;
                 case MembershipCreateStatus.ProviderError:
                     CreatMessage = "服务器出错,请稍候重试";
                     break;
                 case MembershipCreateStatus.UserRejected:
                     CreatMessage = "因为提供程序定义的某个原因而未创建用户";
                     break;
                 case MembershipCreateStatus.Success:
                     CreatMessage = "";
                     break;
                 default:
                     CreatMessage = "服务器端有错误发生,请稍候重试";
                     break;
             }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值