检查用户是否在项目的所有页面中登录了asp.net

本文关键字:登录 net asp 是否 用户 项目 检查 | 更新日期: 2023-09-27 18:03:08

我有2个webfor我希望用户通过loginsp登录。当输入正确的用户名和密码时,重定向到userhome.aspx。现在,如果用户注销并复制userhome的url。我需要重定向用户到loginsps .aspx

1 - loginsp.aspx

cmd.Connection = cn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@vtxtUser", txtUser.Text);
cmd.Parameters.AddWithValue("@vtxtPass", txtPass.Text);
cn.Open();
if(cmd.ExecuteScalar()!=null)
{
    Session["user_name"] = txtUser.Text;
    Response.Redirect("~/authorized/userhome.aspx");
}
else
{                
    lblMsg.Text = "wrong login";
}

2-userhome.aspx

  protected void Page_Load(object sender, EventArgs e)
        {
            string vUser = Session["user_name"].ToString();
            if (vUser != "")
            {
                lblUser.Text = x;
            }else{
                Response.Redirect("~/loginSP.aspx");
            }
        }
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            Session.Clear();
            Response.Redirect("loginsp.aspx");
        }

检查用户是否在项目的所有页面中登录了asp.net

您应该在所有页面的页面加载事件中使用此代码

if(Session["user_name"]==null)
{
Response.Redirect("~/loginSP.aspx");
}

由于您没有使用ASP。. NET会员资格,并使用自定义实现对用户进行身份验证和授权。

如果我是你,我会用下面的方法。

  1. 为只允许经过身份验证的用户访问的页面创建基页。
  2. 创建会话变量,用于存储用户登录信息。
  3. 检查用户是否通过身份验证。
  4. 如果用户通过认证,允许他查看页面,否则重定向到登录页面。

这种方法的优点是:1. 中央逻辑来处理用户是否应该被允许查看页面或应该在一个地方重定向到登录页面。2. 新页面可以使用此基页类作为其基类,以允许对用户进行身份验证访问。3.您可以通过删除页的基类来实现对页的公开访问或身份验证访问。

希望对你有帮助。

谢谢。

您需要子类化AuthorizeAttribute并覆盖它的实现以您想要的方式检查用户

public class MyCustomAuthorize : AuthorizeAttribute
{
    protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
    {
        string vUser = httpContext.Session["user_name"].ToString();
        if (vUser != "")
        {
            return true; // yay user found
        }
        return false; // user not found, this will cause the redirection to kick in
}

现在在你的web配置中,你可以指定你想要重定向到哪里。

<authentication mode="Forms">
      <forms name="yourAuthCookie" loginUrl="~/loginSP.aspx" protection="All" slidingExpiration="true" timeout="60" />
    </authentication>

现在你可以在你的页面上使用这个属性了。

[MyCustomAuthorize] // any page with this attribute will first check if they are loggged in
public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}