pet*_*ski 5 .net c# asp.net security asp.net-membership
我知道这可能听起来像到处都有解释的东西..但我一直在看很多asp.net /阅读视频阅读文章 - 但仍有一些东西缺失,这解释了所有这些"会员"如何联系在一起.
一方面,有这个内置的.net用户管理,允许你创建角色,用户等.然而另一方面,获取该用户,存储它(在会话等)似乎是一个奇怪的任务,从我已阅读,涉及创建自己的'Principal'对象等.
如果有人有理解和时间,他们能否给我们(我)一个简短的解释,说明这一切是什么.也许它是如何联系在一起的......我如何使用字符串用户名/密码来查看帐户是否存在,登录,检查它们是否处于正确的行动角色中?甚至可以获得用户的所有角色是其一部分?
我知道这个问题对于那些已经了解.net用户的人来说可能不太顺利,但是如果你能提供帮助,请回答.
提前谢谢了.peteski
您根本不必创建自己的主体对象.所有你能做的就是用一个外的现成的MembershipProvider(例如:SqlMembershipProvider的)的管理您的用户,并使用RoleProvider之一(例如:SQLRoleProvider)设置授权的用户,如果需要的话.
要获取用户,您不必将其存储在会话中.只需使用Page.User获取当前用户的基本信息(name,IsAuthenticated).
要检查用户是否用户凭据是否正确,您可以使用
Membership.ValidateUser(username,password).
Run Code Online (Sandbox Code Playgroud)
要登录,我建议您使用提供的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.";
Run Code Online (Sandbox Code Playgroud)
PS:该示例来自MSDN
最后,要检查用户是否可以执行操作,请使用
RoleProvider.IsUserInRole(username,rolename)
Run Code Online (Sandbox Code Playgroud)
您还可以通过web.config ex中的配置授权来控制对资源(页面,文件,文件夹等)的访问:
<authorization> <deny users ="?" /> <allow roles ="Administrators"/> <deny users ="*"/> </ authorization>
希望这个帮助,如果不清楚,可以自由地要求更多的信息
编辑
要回答您的评论,以下是它的工作原理:
Page.User使用身份验证cookie来标识当前登录的用户.这个cookie在FormsAuthentication.RedirectFromLoginPage自动设置,但是,如果你只是想设置当前用户没有重定向,您可以手动调用FormsAuthentication.SetAuthCookie(用户名,persistentCookie),其中persistentCookie是,如果你想这个cookie是持久性的一个布尔值,告诉或不在浏览器中.
希望它澄清原来的答案
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |