Asp.net Web 应用程序基于角色的身份验证

Posted

技术标签:

【中文标题】Asp.net Web 应用程序基于角色的身份验证【英文标题】:Asp.net Web Application Role based authentication 【发布时间】:2020-03-04 18:19:52 【问题描述】:

我是 Asp.net 的新手,我一直在尝试创建一个简单的基于事务的系统,其中不同角色的用户将有不同的菜单和类别可供他们使用。目前,我正在使用this 教程进行基于身份验证的登录。

代码正在运行,但我注意到正在使用的数据库是默认连接。我想做的是创建自己的数据库并将其用作默认连接(MyOwnConnectionString)。我该怎么做?

我正在使用 VS 2015 和 Sql Server 2016。我有两个表,即 Tbl_UserTbl_Roles,这两个表与 role_id

链接

更新

上面的教程是关于使用 Asp.net 的默认注册,其中如果用于注册的用户名与声明的变量匹配(在本例中为 Admin),则用户在默认连接中被赋予管理员角色在 AspNetUser、AspNetUserRoles、AspNetRoles 表下。

我有一个名为 Tbl_User 的表,其中包含 "Name, Username, Password, Role"

每当我尝试登录时,要使用的数据库是我创建的数据库(DB_Transaction)而不是 Asp 的默认连接(DefaultConnection DB),并在 Tbl_Roles 中搜索相应的角色,无论是管理员还是然后用户将他们重定向到相应的页面。

What should happen

【问题讨论】:

这似乎是一个更广泛的话题。你能把它分解并尝试提出不同的问题吗?您也可以查看this。 @MohanRadhakrishnan 我只想知道如何使用我在 sql 中创建的数据库来实现基于角色的登录。我似乎找不到任何教程来说明如何将我的数据库绑定到登录名。上面的两个表是我的用户和相应角色的表。根据我提供的链接,作者使用默认登录和数据库连接,并创建了一个类,每当添加一个名为 Admin 的用户时,它都会自动注册为管理员。角色仅在用户注册期间实施。 【参考方案1】:

在 SQL 2016 中创建数据库在 WEB 配置文件中添加该连接字符串。 将该连接字符串传递给实体框架的 SQL 连接对象或数据库上下文之后。here is reference link

  <connectionStrings> 
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-WingtipToys;Integrated Security=True" providerName="System.Data.SqlClient" /> 
<add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\wingtiptoys.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 

【讨论】:

我这样做时会有两个数据库吗?计划只使用我的本地数据库。 您现在只能使用一个数据库,无论是本地的还是服务器的。你必须决定哪一个适合你。【参考方案2】:

您可以从 web.config 文件更改默认连接打开它并转到连接字符串并删除默认连接并在 SQL 中复制您的服务器名称连接并粘贴连接字符串,您可以更改数据库名称 正如您在这张图片中看到的,开始从本地单词中删除默认连接 enter image description here

enter image description here

这是服务器名称连接

【讨论】:

这会在我的数据库中生成默认的 Asp(AspNetRoles, AspNetUsers, AspNetUserRoles) 表吗?【参考方案3】:

您可以使用 web.config 文件来更新您的连接字符串 要么 也可以在你的代码中使用它

using System.Data.SqlClient;

SqlConnection connection = new SqlConnection();
connection.ConnectionString ="Data Source=ServerName;" +"InitialCatalog=DataBaseName;" +
"Integrated Security=SSPI;";
connection.Open();

【讨论】:

就像 Malak Naim 爵士的建议一样,这会在我的数据库中生成默认的 Asp(AspNetRoles, AspNetUsers, AspNetUserRoles) 表吗?【参考方案4】:

如果你想使用Asp.net身份认证和授权,那么我们不需要自己创建表,身份在用户注册后为我们做。 并且登录与授权一起处理。只需在 ConnectionString 中指定数据库名称,现在您可以使用 DefaultConnection 作为 ConnectionString 键。添加注册一个虚拟用户。您应该看到指定数据库中的表。

【讨论】:

所以我不能使用自己的数据库登录?多么的不幸。尽管如此,还是感谢您提供的信息 不,你可以以某种方式绑定表并使用自己的表,但这非常困难,所以我建议使用默认标识表来启动 Asp.net。 你在哪里可以学到这个?不妨试试看。我猜对我来说还有额外的知识。 不确定是否有真实的教程来满足您的需求。但如果您需要,我可以提供尽可能多的帮助。 请。教我怎么做。我真的很好奇该怎么做。

以上是关于Asp.net Web 应用程序基于角色的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在没有 web.sitemap 的情况下进行基于 ASP.NET 角色的表单身份验证和授权?

ASP .NET 中没有表单身份验证的基于角色的安全性

asp.net web.config中基于多个角色的文件夹授权

ASP.Net Core Identity JWT 基于角色的身份验证被禁止

基于.Net Framework 4.0 Web API开发:ASP.NET Web APIs 基于令牌TOKEN验证的实现

使用 Active Directory 中的安全组的 Asp.Net 基于角色的身份验证