gpt4 book ai didi

c# - 为用户分配角色

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:18 24 4
gpt4 key购买 nike

我无法弄清楚如何为用户分配角色。我已经让登录机制正常工作,但需要弄清楚如何使用定义的角色来为用户提供特定访问权限。

我有一个包含这些表的数据库:

                     Tables                     ------   UserTbl          RolesTbl           UserInRoleTbl   -------         ----------          ------------- UserID  (PK)      RoleId  (PK)        ID       (PK) Name              RoleName            UserId UserName          Description         RoleId Password Email

With this small database I'm testing the ability to assign roles to the user.

I'm using LINQtoSQL to act as the Data Access Layer. I've created the login mechanism to login to the software, and then I get stuck on what to do next.

For Example:

username = admin,password= admin, RoleId = 1 ;Rolename =Administrator;

And then I use the following code after the login to get the role:n

public partial class Window3 : Window
{

public Window3()
{
InitializeComponent();

GenericIdentity My2 = new GenericIdentity("admin");

string[] roles1 = { "Administrator" };

GenericPrincipal principal1 = new GenericPrincipal(My2, roles1);
Thread.CurrentPrincipal = principal1;
}

private void LoadWindow(object sender, RoutedEventArgs e)
{ if (Thread.CurrentPrincipal.IsInRole("Administrator"))
{
exercise.Visibility = Visibility;
tot.IsEnabled = false;
}

我实现了代码角色,但没有连接数据库;相反,我想存储数据库中的角色,在 C# 中创建一个方法并写下用户登录后访问应用程序的代码。

进一步解释:我给了 Rolename = Administrator 所以如果用户是 admin 他将获得这个角色,但我不确定如何从数据库中检索此信息并将其绑定(bind)到用户。谁能帮助我?

同一用户提出的相关(或可能重复)问题:

Username and role
Forms Authenticate
How create role to put in the database?

最佳答案

抱歉,我觉得你的问题有点令人困惑。

您似乎想要两个表,User 和 Role,中间有一个多对多连接表 UserRole。用户和角色必须都有主键,它们都出现在连接表中。

create table user
(
user_id int not null,
-- other fields here, like username, password, etc.
primary key(user_id)
);

create table role
(
role_id int not null,
-- other fields here, like role name, etc.
primary key(role_id)
);

create table user_role
(
user_id int not null,
role_id int not null,
primary key(user_id, role_id),
foreign key(user_id) references(user),
foreign key(role_id) references(role)
);

当您查询用户以查看他们是否获得授权时,您正在加入多对多表以同时恢复所有潜在角色。如果您提供的凭证包含一个角色,您的授权代码应该检查以确保它是当时潜在角色集的成员。

一个小建议:将“Tbl”从表名中去掉。在我看来,它们是多余的。

关于c# - 为用户分配角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com