【问题标题】:ASP.NET Users/Membership/MembershipUser/Security/Principal/Profile... HELPASP.NET 用户/Membership/MembershipUser/Security/Principal/Profile... 帮助
【发布时间】:2010-11-28 18:23:27
【问题描述】:

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

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

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

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

提前非常感谢。 佩特斯基

【问题讨论】:

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


    【解决方案1】:

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

    要获取用户,您不必将其存储在会话中。只需使用 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 是一个布尔值,告诉您是否希望此 cookie 持久或者不在浏览器中。

    希望它澄清原来的答案

    【讨论】:

    • 嗨马丁,这有点帮助 - 实际上。虽然如果我不想将用户从一个页面重定向到另一个页面怎么办.. 设置 Page.User 的方法是什么(即登录他们)。 RedirectFromLoginPage 会这样做吗? (智能并没有说清楚)。我也在寻找会员资格的每个部分的解释(以帮助我理解它并供参考)。但到目前为止,感谢您的回复!非常感谢!
    • 我现在发现使用 FormsAuthentication.SetAuthCookie();我可以“登录用户”。然后我重定向回同一页面,我可以在其中添加逻辑来处理不同的角色等。
    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多