我的项目中有五个.aspx
个页面,第一个是登录页面,另一个是主页,索引等。问题是当用户在登录页面输入用户ID和密码时,它会直接到下一页是主页。但是,当我只是放置主页的URL时,它也会显示没有任何登录身份验证的页面。
答案 0 :(得分:1)
对于项目的当前结构,您可以在验证用户凭据并存储登录的用户详细信息后,在登录页面上创建Session
变量,即
在您的登录页面中,登录按钮单击处理程序执行此操作:
protected void btnLogin_Click(object sender, EventArgs e)
{
string username= txtUsername.Text;
string pwd = txtPassword.Text;
//call your logic to verify user credentials.
VerifyUserCredentialFromDb(username, pwd);
if(UserValid)
{
Session["User"] = GetUserObject(username,pwd);
//whatever your logic is, make sure, you create the Session object, before
//below line,whereever you are doing it
Response.Redirect("Home.aspx");
}
}
和所有其他页面的Page_load
protected void Page_Load(object sender, EventArgs e)
{
if(Session["User"]==null)
Response.Redirect("login.aspx");
}
顺便说一下,你应该看看Forms Authentication。
查看this简单表单身份验证实现
答案 1 :(得分:1)
您可以使用表单身份验证控制web.config文件中的身份验证...
<system.web>
<authentication mode="Forms">
<forms name="MySite" loginUrl="~/Login.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseCookies"/>
</authentication>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
<location path="Members">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
这将阻止对网站中“成员”文件夹的所有未经授权的访问。因此,如果您只需在地址栏中输入http://localhost/Members/Default.aspx
,它就会将您发回localhost/Login.aspx
的登录页面。
虽然这明确拒绝访问Members文件夹中的页面,但您可以重写它以阻止访问除主页之外的所有页面,方法是将<allow users="?" />
替换为您在其下方看到的<deny users="?" />
。
通常你也想在那些看起来像这样的页面(C#)中写一张支票:
protected void Page_Load(object sender, System.EventArgs e)
{
if (Context.User.Identity.IsAuthenticated)
{
// User is logged in, continue
}
else
{
// No valid login...
Session.Clear();
Response.Redirect("~/Login.aspx");
}
}
希望这有帮助。
答案 2 :(得分:0)
您需要在会话..以及aspx页面上的页面加载事件中保存用户凭据
protected void Page_Load(object sender, EventArgs e)
{
if(Session["Username"]==null)
Response.Redirect("login.aspx");
}
如果没有会话,它会重定向到登录页面..