微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – FormsAuthentication.SetAuthCookie做了什么

我正在使用一个createuserwizard控件.在CreatedUser事件上,我放置了此代码以将用户添加到角色.
protected void RegisterUser_CreatedUser(object sender,EventArgs e)
    {
        FormsAuthentication.SetAuthCookie(RegisterUser.UserName,false /* createPersistentCookie */);


        if (!Roles.IsUserInRole("Test"))
        {
            var User= Membership.GetUser();
            Roles.AddUserToRole(User.UserName,"Test");
        }

        string continueUrl = RegisterUser.ContinueDestinationPageUrl;

        if (String.IsNullOrEmpty(continueUrl))
        {
            continueUrl = "~/";
        }
        Response.Redirect(continueUrl);
    }

我还想知道FormsAuthentication.SetAuthCookie是什么(RegisterUser.UserName,false / * createPersistentCookie * /);表示它的用途以及为什么Membership.GetUser()为null.

解决方法

您的createuserWizard上有LoginCreatedUser =“false”或disableCreatedUser =“true”吗?

这些将阻止用户立即登录,并导致Membership.GetUser()返回null,因为用户当前未登录.

如果您希望用户立即登录,请在createuserWizard上同时设置LoginCreatedUser =“true”和disableCreatedUser =“false”.这应该让你当前的代码工作.

FormsAuthentication.SetAuthCookie()设置浏览器cookie以启动用户的会话.这是每次将页面发布到服务器时保持用户登录内容. createPersistentCookie创建一个持久性cookie,在浏览器关闭时不会过期,因此用户可以返回该站点自动登录.它应该基于用户是否选中了“登录”表单上的“记住我”复选框.认情况下,它在createuserWizard表单中不可用,但如果您愿意,可以在模板中为其添加复选框.

如果您不希望用户自动登录,请从代码删除FormsAuthentication.SetAuthCookie()行,并相应地设置createuserWizard属性.如果要在用户登录之前批准用户,请设置disableCreatedUser =“true”.这将阻止他们登录,直到您从IIS管理器中的.Net用户模块设置用户IsApproved = true,或者您拥有自定义网页来批准用户.

您仍然可以在创建用户时将用户添加到适当的角色,而无需将其登录

if (!Roles.IsUserInRole(RegisterUser.UserName,"Test"))
{  
    Roles.AddUserToRole(RegisterUser.UserName,"Test");
}

原文地址:https://www.jb51.cc/aspnet/251930.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐