gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:08:04 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com