我正在尝试用密码保护一个 asp.net 站点,我做得很好,但是如果他们把 /home.aspx 放在地址的末尾,那么它将绕过登录页面,有没有办法让那些其他的页面只能通过按钮访问,如果直接访问它们会将您重定向到登录页面?
谢谢
我正在尝试用密码保护一个 asp.net 站点,我做得很好,但是如果他们把 /home.aspx 放在地址的末尾,那么它将绕过登录页面,有没有办法让那些其他的页面只能通过按钮访问,如果直接访问它们会将您重定向到登录页面?
谢谢
除非您使用其他方式.. 只需查看 msdn 上的 asp.net 会员提供程序文档:
http://msdn.microsoft.com/en-us/library/ff648345.aspx
如果您向右滚动到底部,这就是您要查找的内容,但此页面提供了您需要的所有信息。
您可以将登录状态存储在会话中,并检查页面加载或预初始化以获取 isLoggedin 标志,该标志只有在成功登录时才会设置。如果他们登录,这不会阻止他们直接导航到页面,但如果他们没有登录,则会阻止他们。
在您登录的那一刻,您应该开始一个会话。这是我在一个高中项目中使用的一些代码
> public void LoginUser(string id, string mail, string ww, string admin)
> {
> Session["UserID"] = id;
> Session["IsAdmin"] = admin;
> if(admin == "admin")
> {
> Response.Redirect("~/Admin/AdminCP.aspx");
> }
> else if (admin == "user")
> {
> Response.Redirect("~/User/UserCP.aspx");
> }
> else
> {
> lblLoginError.Text = "An error has accurred";
> lblLoginError.Visible = true;
> lblLoginError.CssClass = "failureNotification left";
> }
> }
这是我用来检测用户是管理员还是基本用户的一种方法。在此之后,您必须在 Page_Load-section 的每一页中添加
> if (Session["UserID"] == null)
> {
> Response.Redirect("~/Account/Login.aspx");
> }
这将检查每次会话用户 ID 是否正在运行。如果为空,则永远不会登录,因此用户将被重定向到他可以登录的页面。
希望这有帮助;-)