asp.net - 在 IF 语句中包含 SELECT 语句结果

标签 asp.net asp.net-webpages user-roles

我正在开发一个带有 Windows 身份验证的简单 ASP.NET Intranet。我正在使用 Active Directory 对用户进行身份验证,以允许他们访问该站点,但希望实现特定于站点的用户角色来管理页面和内容访问,而不干扰或添加到现有的 Windows 用户组。

我对如何实现这一目标的想法是创建一个 UserRoles 表,并为每个用户在 Users 表中放置一个特定的 RoleId 。然后,我会将当前登录用户名与Users表进行比较,以找出用户所处的角色。

问题1:

这是解决这个问题的好方法吗?

问题 2(如果问题 1 的答案是肯定的):

如何为当前用户选择正确的 RoleId,并在 IF 语句中使用?

这就是我的想法:

var db = Database.Open("Database") ;

// Find out what my Windows Username is
var currentUser = Request.LogonUserIdentity.Name.Substring(Request.LogonUserIdentity.Name.LastIndexOf(@"\") + 1);

// Find out what Role I'm in    
var getUser = "SELECT RoleId FROM Users WHERE UserID = @0";

// Get the result
var selectedUser = db.Query(getUser, currentUser);

var requiredRole = "1";

// Choose where I should go
if (SelectedRoleId != requiredRole)
{
    Response.Redirect("~/AreaRestricted");
}

任何帮助都会很棒。

最佳答案

ASP.NET 包含一个适应性很强的 RoleManager。不久前,我创建了一个自定义方法,就像您在这里使用的方法一样,然后我发现了 SqlRoleProvider,它令人难以置信。完成您需要的一切,并且您可以使用或不使用 SqlMembershipProvider 来实现它。

将其添加到 web.config 的 system.web 部分:

<!-- Configure the Sql Role Provider -->
<roleManager enabled="true" defaultProvider="SqlRoleProvider">
  <providers>
    <add name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="QCmembership" applicationName="Quality_Training_2" />
  </providers>
</roleManager>

然后,您可以使用内置命令添加新的自定义角色,并以相同的方式将用户添加到这些角色。它只需要用户名的字符串值或某种标识符。看起来像这样:

Roles.AddUserToRole("anyUserName", "myCustomRole")

更多信息(包括角色提供者方法的列表)可以在 HERE 找到。 。

关于asp.net - 在 IF 语句中包含 SELECT 语句结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19306357/

相关文章:

spring-security - 在 jhipster 中使用角色?

sql-server - 如何仅授予对 Sql Server 数据库中单个表的读访问权限

asp.net - Redis 支持的 ASP.NET SessionState 提供程序

asp.net - 带有 SQL Server 的信号器

c# - 如何在 C#.net Web-Pages with WebMatrix 环境中使用 AJAX 传递和访问服务器端的对象数组?

asp.net - 将多个 asp.net 页面组合成一个页面

asp.net - 升级到 MVC 5.2.0.0 导致异常 "Method not found: ' Boolean System.Web.WebPages.BuildManagerWrapper.IsNonUpdateablePrecompiledApp”

带有upload_files true但edit_post false的Wordpress自定义用户角色,我如何删除和编辑媒体?

asp.net - 如何保证多个connectionString密码安全、独立且易于部署?

javascript - 单击按钮时 JavaScript 中的确认框,如果返回 true 则执行同一按钮的单击事件