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_User
和 Tbl_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 web.config中基于多个角色的文件夹授权
ASP.Net Core Identity JWT 基于角色的身份验证被禁止
基于.Net Framework 4.0 Web API开发:ASP.NET Web APIs 基于令牌TOKEN验证的实现