根据我的 SQL 数据库中的用户角色和位置限制对 ASP.NET VB Web 表单应用程序中页面的访问?
Restrict access to pages in an ASP.NET VB web forms application based on a user role and location from my SQL database?
我正在使用 ASP.NET VB Web 表单应用程序。
我已经在我的本地 SQL 服务器数据库中创建了用户登录凭据。
我想阻止用户在没有适当的 role/location 的情况下直接导航到页面,这可能吗?
我猜是类似于页面加载事件,但是我应该在哪里存储用户从一个页面到下一个页面的验证凭据?
好的,这是一般的工作方式吗?
主页 - 也许带有菜单栏等?好吧,您倾向于 allow/let 每个人都进入该页面。
但是,假设您创建了一个名为 SalesGroup 的角色。如果您只希望拥有 SalesGroup 的用户使用该页面?
那么我强烈建议您创建(添加)一个新文件夹(比如 sales)。
现在您可以 create/add 到该文件夹的 asp.net 个页面。但是您还只需将一个名为 web.config 的文件添加到该文件夹即可。
现在,任何用户 - 即使没有登录,或者即使他们已经登录?他们不能使用或查看这些页面,除非他们是给定角色的成员。 (在我们的示例销售组中)。
所以我建议允许任何人使用第一个主登录页面。或者将首页设置为登录页面(因为每个人都必须能够使用此类页面)。
如前所述,为了保护一组页面,我们假设这些页面放置在一个文件夹(即子文件夹)中。
你只需将 web.config 文件放入同一个文件夹,你就会得到这个:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<allow roles="SalesGroup" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
什么是真正的好:
如果用户尝试 load/use/navgate 到该文件夹中的任何页面?如果他们未登录,则他们将自动重定向到登录页面。真正好的是一旦他们登录,他们就会跳转到有问题的网页。所以登录的确保是 100% 自动的,但更好的是要求他们登录安全页面,并且在登录后,他们会自动重定向到他们试图使用的页面。
当然,在某些情况下,我可能会写一些代码。
例如,我有一些页面只要求用户登录,但我可以在代码 test/check 中针对角色。这提供了更好的控制和使用角色的能力。
所以,在页面加载事件中,你经常会看到这样的代码:
If Roles.IsUserInRole("Staff") then
' this is for staff members - jump to staff page
response.redirect("~/Staff/StaffInfo.aspx
End if
因此,您可以重定向,show/hide 根据他们的角色显示内容。
但是,如前所述,如果没有任何代码,您至少可以在晚上高枕无忧,因为除非用户已登录并且他们具有以下角色,否则无法使用上述任何安全页面你在网页配置中设置。
因此,在大多数情况下,基本页面(例如网站的根目录)不会受到保护。
我正在使用 ASP.NET VB Web 表单应用程序。
我已经在我的本地 SQL 服务器数据库中创建了用户登录凭据。
我想阻止用户在没有适当的 role/location 的情况下直接导航到页面,这可能吗?
我猜是类似于页面加载事件,但是我应该在哪里存储用户从一个页面到下一个页面的验证凭据?
好的,这是一般的工作方式吗?
主页 - 也许带有菜单栏等?好吧,您倾向于 allow/let 每个人都进入该页面。
但是,假设您创建了一个名为 SalesGroup 的角色。如果您只希望拥有 SalesGroup 的用户使用该页面?
那么我强烈建议您创建(添加)一个新文件夹(比如 sales)。
现在您可以 create/add 到该文件夹的 asp.net 个页面。但是您还只需将一个名为 web.config 的文件添加到该文件夹即可。
现在,任何用户 - 即使没有登录,或者即使他们已经登录?他们不能使用或查看这些页面,除非他们是给定角色的成员。 (在我们的示例销售组中)。
所以我建议允许任何人使用第一个主登录页面。或者将首页设置为登录页面(因为每个人都必须能够使用此类页面)。
如前所述,为了保护一组页面,我们假设这些页面放置在一个文件夹(即子文件夹)中。
你只需将 web.config 文件放入同一个文件夹,你就会得到这个:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<allow roles="SalesGroup" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
什么是真正的好: 如果用户尝试 load/use/navgate 到该文件夹中的任何页面?如果他们未登录,则他们将自动重定向到登录页面。真正好的是一旦他们登录,他们就会跳转到有问题的网页。所以登录的确保是 100% 自动的,但更好的是要求他们登录安全页面,并且在登录后,他们会自动重定向到他们试图使用的页面。
当然,在某些情况下,我可能会写一些代码。
例如,我有一些页面只要求用户登录,但我可以在代码 test/check 中针对角色。这提供了更好的控制和使用角色的能力。
所以,在页面加载事件中,你经常会看到这样的代码:
If Roles.IsUserInRole("Staff") then
' this is for staff members - jump to staff page
response.redirect("~/Staff/StaffInfo.aspx
End if
因此,您可以重定向,show/hide 根据他们的角色显示内容。
但是,如前所述,如果没有任何代码,您至少可以在晚上高枕无忧,因为除非用户已登录并且他们具有以下角色,否则无法使用上述任何安全页面你在网页配置中设置。
因此,在大多数情况下,基本页面(例如网站的根目录)不会受到保护。