Dav*_*vid 16 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);
}
Run Code Online (Sandbox Code Playgroud)
我还想知道FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);它的用途和用途Membership.GetUser()是什么,为什么是null.
nek*_*kno 16
你有LoginCreatedUser="false"或者DisableCreatedUser="true"你的CreateUserWizard?
这些将阻止用户立即登录,并导致Membership.GetUser()返回null,因为用户当前未登录.
如果你想立即登录的用户,设置为既不或两者LoginCreatedUser="true"并DisableCreatedUser="false"在你的CreateUserWizard.这应该让你当前的代码工作.
FormsAuthentication.SetAuthCookie()设置浏览器cookie以启动用户的会话.这是每次将页面发布到服务器时保持用户登录的原因.createPersistentCookie创建一个持久性cookie,在浏览器关闭时不会过期,因此用户可以返回该站点并自动登录.它应该基于用户是否选中了"登录"表单上的"记住我"复选框.CreateUserWizard默认情况下,它在表单上不可用,但如果您愿意,可以在模板中为其添加复选框.
如果您不希望用户自动登录,请FormsAuthentication.SetAuthCookie()从代码中删除该行,并CreateUserWizard相应地设置属性.如果要在用户登录前批准用户,请进行设置DisableCreatedUser="true".这将阻止他们登录,直到您IsApproved=true从IIS管理器中的.Net用户模块设置用户,或者您拥有自定义网页来批准用户.
您仍然可以在创建用户时将用户添加到适当的角色,而无需将其登录:
if (!Roles.IsUserInRole(RegisterUser.UserName, "Test"))
{
Roles.AddUserToRole(RegisterUser.UserName, "Test");
}
Run Code Online (Sandbox Code Playgroud)