从登录控件获取信息
从登录控件获取信息
我是一名撰写学位项目的学生,我正在努力理解asp.net的成员资格和用户管理。
我阅读了很多文章,有些很有用,但有些让我感到困惑。
在阅读了这篇文章之后:Examining ASP.NET's Membership, Roles, and Profile
我定义了一个SqlMembershipProvider,在我的SQL服务器中创建了用户数据库。
然后我通过.net的管理工具定义了一些用户,并在我的aspx页面上添加了一个登录控件。
我的问题是:
- 控件将登录用户的信息保存在哪里?
我如何访问这些信息?
- 我如何自定义一个登录函数来验证用户并将其重定向到另一个页面?
- 我如何在新页面中使用loginstatus控件来显示不同用户登录或匿名用户的信息?
- 我想限制某些页面只对特定用户开放,并根据不同用户构建动态页面。我需要定义角色并检查用户角色吗?
- 还有哪些成员资格函数可以帮助我管理用户和角色?
在定义提供程序和连接字符串之后的配置文件如下:
这些是提供程序在MS SQL服务器中创建的表:
aspnet_Applications aspnet_Membership aspnet_Paths aspnet_PersonalizationAllUsers aspnet_PersonalizationPerUser aspnet_Profile aspnet_Roles aspnet_SchemaVersions aspnet_Users aspnet_UsersInRoles aspnet_WebEvent_Events
非常感谢您的回答:)
从上述内容中可以得出以下问题的出现原因和解决方法:
问题1:获取登录控件中保存的关于登录用户的信息的位置以及如何访问该信息?
原因:登录控件将用户的凭据信息加密存储在登录cookie中,并且只在数据库中保存最后一次登录和登录失败的计数器。
解决方法:使用以下代码读取登录cookie中的信息:
var authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
问题2:如何限制某些页面只对特定用户开放,并且根据不同用户构建动态页面?需要定义角色并检查用户角色吗?
解决方法:是的,需要定义角色并检查用户角色。
问题3:如何自定义登录函数来验证用户并重定向到另一个页面?
解决方法:可以使用登录控件的OnLoggingIn="OnLogginIn"
属性来干预登录过程,返回e.Cancel = true;
取消登录或返回true继续登录。或者可以创建一个新的凭据cookie,参考链接:How can I manually create a authentication cookie instead of the default method?
问题4:还有哪些成员函数可以帮助管理用户和角色?
解决方法:只要了解登录模块的数据库表和其工作方式,可以直接使用SQL来修改它们。
问题5:如何自定义登录函数来验证用户并重定向到另一个页面?
解决方法:可以使用用户配置文件(User Profile)存储额外参数,然后在代码中使用它们。在登录控件中的OnLoggedIn="OnLoggedIn"
是最后一次调用,可以在那里读取该参数并将用户发送到正确的页面。
最后,通过对话中的问题和解答可以确定,在OnLoggingIn="OnLogginIn"
中定义一个函数并点击登录按钮时,不会覆盖控件的默认登录功能,而是会在认证事件之后触发该函数。该函数只会在用户有效时触发。