FormAuthentication.SetAuthCookie是做什么的?

 2023-02-16    300  

问题描述

我正在使用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.

FormAuthentication.SetAuthCookie是做什么的?

推荐答案

在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");
}

其他推荐答案

创建用户后,您希望它们立即登录,正确?如果是这种情况,您将删除ASP.NET使用的Auth Cookie以确定用户是否已被认证(与授权不同). “假”意味着它不是持久的(相当于”记住我?”选项上的登录表单.

为什么您的用户为null,我建议在该获取者呼叫之前放置一个断点并查询您的用户数据存储,以查看它是否真实.

以上所述是小编给大家介绍的FormAuthentication.SetAuthCookie是做什么的?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33870.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。