c# - ASP.NET 用户/成员/MembershipUser/安全/主体/配置文件...帮助

标签 c# .net asp.net security asp.net-membership

我知道这听起来像是到处都有解释的东西..但我一直在看很多 asp.net/learn 视频阅读文章 - 但仍然缺少一些东西来解释所有这些“成员(member)资格”是如何联系在一起的。

一方面,内置的 .net 用户管理允许您创建角色、用户等。另一方面,获取该用户并将其存储(在 Session 等中)似乎是一项奇怪的任务,根据我的阅读,涉及创建您自己的“主要”对象等。

如果有人有理解力和时间,他们能否给我们(我)一个简短的解释,说明这一切是怎么回事。也许它是如何联系在一起的......我如何使用字符串用户名/密码来查看帐户是否存在,登录,检查它们是否处于正确的操作角色......甚至获得用户的所有角色是一部分吗?

我知道这个问题可能不太适合已经很了解 .net 用户的人,但请只在你能提供帮助的情况下回答。

非常感谢。 佩特斯基

最佳答案

您根本不必创建自己的主体对象。您所能做的就是使用开箱即用的 MembershipProvider(例如:SQLMembershipProvider)之一来管理您的用户,并使用 RoleProvider(例如:SQLRoleProvider)之一为用户设置授权(如果需要)。

要获取用户,您不必将其存储在 session 中。只需使用 Page.User 即可获取当前用户的基本信息(姓名、IsAuthenticated)。

要检查用户凭据是否正确,您可以使用

Membership.ValidateUser(username,password).

要登录,我建议您使用提供的 ASP.NET 登录控件,但您可以编写自己的登录名并多做一些工作。如果您使用表单例份验证,则类似于:

if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
   FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
else
   Msg.Text = "Login failed. Please check your user name and password and try again.";

P.S : 示例来自MSDN

最后,要检查用户是否可以执行操作,您可以使用

RoleProvider.IsUserInRole(username,rolename)

您还可以通过在 web.config ex 中配置授权来控制对资源(页面、文件、文件夹等)的访问:

<授权> <拒绝用户="?"/> <拒绝用户="*"/>

希望这对您有所帮助,如果不清楚,请随意询问更多信息

编辑

要回答您的评论,请按以下方式操作:

Page.User 使用身份验证 cookie 来识别当前登录的用户。此 cookie 在 FormsAuthentication.RedirectFromLoginPage 中自动设置,但是,如果您只想设置当前用户而不重定向,您可以手动调用 FormsAuthentication.SetAuthCookie(userName,persistentCookie) 其中 persistentCookie 是一个 bool 值,告诉您是否希望此 cookie 持久化或不在浏览器中。

希望它澄清原来的答案

关于c# - ASP.NET 用户/成员/MembershipUser/安全/主体/配置文件...帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1432196/

相关文章:

c# - 当我从下拉列表中选择一个值来解决网格中的值时,它会覆盖它

c# - 使用 Selenium Web Driver 注入(inject)自定义 JS 代码

c# - 当前上下文中不存在名称 'UIFramework'

c# - 什么在 visual studio 2013 中创建目录 "app.publish"?

c# - 如何通过这段代码匹配以 "أقول "开头的句子?

c# - 当 DbContext 在单独的项目中时,visual studio 2022 .NET 6 脚手架不起作用

c# - 访问其他服务器时登录失败: unknown user name or bad password.错误

c# - .NET 中 AJAX 和 ViewState 的行为不一致

c# - 如何检查 Windows 身份是否正在模拟?

c# - 在执行运行时程序集加载时,如何仅查找声明的方法?