asp.net - FormsAuthentication.SetAuthCookie 的作用是什么

标签 asp.net security asp.net-membership

我正在使用 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() 为空。

最佳答案

您的 CreateUserWizard 上是否有 LoginCreatedUser="false"DisableCreatedUser="true"

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

如果您希望用户立即登录,请在 CreateUserWizard< 上不设置或同时设置 LoginCreatedUser="true"DisableCreatedUser="false"/。这应该可以让您当前的代码正常工作。

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

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

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

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

关于asp.net - FormsAuthentication.SetAuthCookie 的作用是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7134638/

相关文章:

javascript - 带文本输入的 jQuery 模式消息

c# - 连接到 Azure 云 Blob 存储失败,证书无效

asp.net - 为什么Membership.CreateUser失败?

asp.net - 是否可以在 asp.net 成员资格中使用用户名作为外键

javascript - 如果 reCaptcha 仍未完成,则停止或中断用户登录

javascript - 在 OnClientClick 中执行 Eval

javascript - 如何将回发参数从 JS 传递给 VB?

android - 有哪些解决方案来保证服务器端和移动客户端通信的安全?

security - 是否应该保护带有登录表单的网页?

asp.net-mvc-3 - ASP.Net MVC 基于安全隐藏/显示菜单项