您根本不必创建自己的主体对象。您所能做的就是使用开箱即用的 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 持久或者不在浏览器中。
希望它澄清原来的答案