我是.NET新手,一直在搜索这个问题,但没有运气。我创建了一个登录页面,其中包含用户ID和密码。在我的webconfig中,我将以下代码放入以拒绝未经过身份验证的用户。
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="10" protection="All" />
</authentication>
<authorization>
<deny users="?"></deny>
</authorization>
我想要完成的是,当用户输入正确的信息时,我想将关于用户的信息存储在cookie中,例如,如果有管理员,经理,用户等...这里是用户单击“提交”按钮时发生的代码。问题是用户输入正确信息后页面不会重定向到页面。非常感谢任何帮助。
If txtPassword.Text.ToLower = "test" Then
'Create a cookie
Dim cookie As New HttpCookie("UserInfo")
'Cookie variables
cookie("User") = txtUser.Text
cookie("UserGroup") = "Admin"
'Add Cookies to current web responses
Response.Cookies.Add(cookie)
Response.Redirect("login_successful.aspx")
'FormsAuthentication.RedirectToLoginPage("login_successful.aspx")
Else
lblResult.Text = "Incorrect Password"
End If
答案 0 :(得分:3)
我不建议使用cookie来存储角色信息。使用其中一个内置提供程序来完成此任务。例如,试试这个。
打开Visual Studio或Visual Studio Express并创建一个新的“ASP.NET Web应用程序”。您会注意到它包含一个“帐户”目录,其中包含如何使用内置提供程序的示例。您必须使用正确的表,角色,sprocs等设置数据库以使用内置提供程序,但这很容易。如果您安装了.NET 4.0程序,该程序将数据库设置为使用内置的提供程序,它名为aspnet_regsql.exe,它通常位于此处:
C:\ Windows \ Microsoft.NET \框架\ v4.0.30319 \ aspnet_regsql.exe的
然后,为了解决您的登录问题,您可以使用Login控件并使用Login.DestinationPageUrl属性将用户重定向到您登录后所需的页面。
即使您不使用内置提供程序,这也可以让您更好地了解如何在网页中实施角色。
答案 1 :(得分:1)
我想在重定向之前,你必须先调用FormsAuthentication.SetAuthCookie
方法来设置身份验证cookie。
是的,请考虑关于joel coehoorn关于保存信息的cookie的评论。
答案 2 :(得分:1)
您应该将角色存储在ASPNetRoles表中,并在创建用户时将角色与用户相关联,而不是使用cookie来存储该信息(可以被黑客入侵)。您可以使用以下代码检查角色:
If (Roles.IsUserInRole("rolename")) Then
'Do something useful
End If
至于重定向,它包含在哪个事件处理程序中?
答案 3 :(得分:1)
你能试试这两个吗?
1)网络配置可能需要引用cookie名称
<forms name="UserInfo" ...
2)Web Config也可能需要告知谁允许
<authorzation>
<allow user="Admin" />
<deny...