假设我有两个权限:Admin和Host,并且我有一个默认页面。
登录后:管理员用户可以看到所有内容,但主机用户在页面中看不到几个按钮
那么我应该复制默认页面吗?或者有没有办法在重定向到默认页面时禁用按钮?
If Login1.Password = Session("pwd") Then
Response.Redirect("profile_test_1.aspx")
End If
注意,我使用的是网络应用程序
谢谢:)
我使用C#,但我确信这也适合VB。您可以使用LoginView
网络控件,当然,还可以将所有内容保持在同一页面中。
示例
<asp:LoginView ID="LoginView1" Runat="server">
<LoggedInTemplate>
<asp:LoginName ID="LoginName1" Runat="server"
FormatString ="Welcome, {0}"/>
<br />
<asp:HyperLink ID="HyperLink1" Runat="server"
NavigateUrl="~/MemberPages/ChangePassword.aspx">
Change Password
</asp:HyperLink>
</LoggedInTemplate>
<AnonymousTemplate>
<asp:Login id="Login1" runat="server"
CreateUserText="Create a new user..."
CreateUserUrl="~/Register.aspx"
PasswordRecoveryUrl="~/Recovery.aspx"
UserNameLabelText="E-mail address:" />
</AnonymousTemplate>
</asp:LoginView>
在本例中,我将为登录用户和匿名用户分离块,但您也可以基于Roles
进行同样的操作。
来源:http://msdn.microsoft.com/en-us/library/ms178329%28v=vs.90%29.aspx
您可以创建一个将在用户验证后运行的子。您可以传递一个布尔Admin,子将隐藏/显示所需的按钮。根据传递用户角色的方式,可以在回发或页面加载时调用此函数。
伪码:
Sub SetPermissions(Byval blAdmin as boolean)
If blAdmin Then
'Insert code to showbuttons; ie. btnAdminOnly.Visible = True
Else
'Insert code to hide buttons; ie. btnAdminOnly.Visible = False
End If
End Sub