流程:Login.ashx->NVelocity模板引擎渲染HTML文件(Login.html)展示给用户->Login.ashx处理数据->相关操作;
两个页面通过 hidde 隐藏字段Login,判断是展示还是登录。
<!DOCTYPE html>
<html lang="en">
<head>
<title>毕业设计系统登录</title><meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="Login/css/bootstrap.min.css" />
<link rel="stylesheet" href="Login/css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="Login/css/matrix-login.css" />
<link href="Login/css/font-awesome.css" rel="stylesheet" />
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700,800' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="loginbox">
<form id="loginform" class="form-vertical" action="../Login.ashx" method="post">
<input type="hidden" name="Login" value="true" />
<div class="control-group">
<div class="controls">
<div class="main_input_box">
<span class="add-on bg_lg"><i class="icon-user"></i></span><input type="text" name="Username" placeholder="用户名" required='required' oninvalid="setCustomValidity('请填写用户名!')" oninput="setCustomValidity('')" />
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<div class="main_input_box">
<span class="add-on bg_ly"><i class="icon-lock"></i></span><input type="password" name="Password" placeholder="密码" required='required' oninvalid="setCustomValidity('请填写密码!')" oninput="setCustomValidity('')"/>
</div>
</div>
</div>
<div class="form-actions">
<span class="pull-left"><a href="#" class="flip-link btn btn-info" id="to-recover">忘记密码?</a></span>
<span class="pull-right"><input type="submit" value="登录" class="btn btn-success"/></span>
</div>
</form>
<form id="recoverform" action="#" class="form-vertical">
<p class="normal_text">请联系相关人员重置密码!</p>
<div class="form-actions">
<span class="pull-left"><a href="#" class="flip-link btn btn-success" id="to-login">« 返回登录</a></span>
</div>
</form>
</div>
<script src="Login/js/jquery.min.js"></script>
<script src="Login/js/matrix.login.js"></script>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Data;
using System.Data.SqlClient;
namespace thesis
{
/// <summary>
/// 登录界面
/// </summary>
public class Login : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
string filename="~/Login";
string template="login.html";
context.Session.Clear(); //清除Session的所有信息(记录用户的一些基本信息)
if (context.Request["Login"] != null)
{
bool login = Convert.ToBoolean(context.Request["Login"]);
if (login)
{
string usr = context.Request["Username"];
string pwd = context.Request["Password"];
dynamic login_data = CommonHelper.Login(usr, pwd); //登录类
if (login_data.error == 0) //判断用户是否登录成功!
{
//将用户的基本信息存入Session
context.Session["ID"] = login_data.id; //用户ID
context.Session["ROLE"] = login_data.role; //用户角色类型(学生,教师)
context.Session["NAME"] = login_data.name; //用户姓名
if (string.Equals("teacher", login_data.role)) //判断用户是教师
{
context.Session["ISLEADER"] = login_data.isleader; //该教师是否具有管理能力
context.Session["LEADERLV"] = login_data.leaderLv; //管理能力的等级
}
context.Response.Redirect("index.ashx"); //重定向到主页
}
else
{
switch ((int)login_data.error)
{
case -1:
CommonHelper.YesOrNo(context, false, "", "用户名输入有误", "Login.ashx");
break;
case -2:
CommonHelper.YesOrNo(context, false, "", "无此用户", "Login.ashx");
break;
case -3:
CommonHelper.YesOrNo(context, false, "", "密码输入错误,请重新输入", "Login.ashx");
break;
default:
CommonHelper.YesOrNo(context, false, "", "错误信息不明", "Login.ashx");
break;
}
}
}
else
{
string html=CommonHelper.GetHtml(filename,template,null);
context.Response.Write(html);
}
}
else
{
string html=CommonHelper.GetHtml(filename, template, null);
context.Response.Write(html);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
问题一:搭建好了以后,进入Login.ashx页面很慢,但是取消加载页面,就立即出现页面。不知道啥情况?ashx不是速度会快一点的么?
我的观点:问题是不是出现在这里?
if (context.Request["Login"] != null)
{
bool login = Convert.ToBoolean(context.Request["Login"]);
if (login)
问题二:其他页面差不多也是这样,因为我写了一个登录类,这个类能否获得session值来判断用户有没有登录,没有登录就会重定向到登录页面。但是有时候正常操作会突然的重定向到登录页面,求解?
谢谢大家。如果有热心人士想获得整个网站的源代码来加以研究,可以联系我!
8 个解决方案
#1
顶一个!
#2
说明登录那个方法中可能有耗时的操作,比如数据库操作,仔细查一下
#3
晕,贴这么多上来。。。。。。。。。。
#4
好复杂呀~~~
#5
设断点一步一步的查看 哪一步耗时比较长
#6
1 登录方法调试下
2 不用放那么多session,统一为一个对象放进去
3 登录页面没必要用模版引擎,登录返回失败成功就行
2 不用放那么多session,统一为一个对象放进去
3 登录页面没必要用模版引擎,登录返回失败成功就行
#7
打开浏览器的F12,然后点网络,跟踪,刷新一下页面,看看哪个地方最耗时,然后找对应的解决办法。(火狐、IE可以用F12,谷歌浏览器直接右键查看元素 然后找到网络刷新页面就可以跟踪各个请求的消耗时间了。)
#8
fonts.googleapis.com/css?family=Open+Sans:400,700,800
很可能是连接google的问题
很可能是连接google的问题
#1
顶一个!
#2
说明登录那个方法中可能有耗时的操作,比如数据库操作,仔细查一下
#3
晕,贴这么多上来。。。。。。。。。。
#4
好复杂呀~~~
#5
设断点一步一步的查看 哪一步耗时比较长
#6
1 登录方法调试下
2 不用放那么多session,统一为一个对象放进去
3 登录页面没必要用模版引擎,登录返回失败成功就行
2 不用放那么多session,统一为一个对象放进去
3 登录页面没必要用模版引擎,登录返回失败成功就行
#7
打开浏览器的F12,然后点网络,跟踪,刷新一下页面,看看哪个地方最耗时,然后找对应的解决办法。(火狐、IE可以用F12,谷歌浏览器直接右键查看元素 然后找到网络刷新页面就可以跟踪各个请求的消耗时间了。)
#8
fonts.googleapis.com/css?family=Open+Sans:400,700,800
很可能是连接google的问题
很可能是连接google的问题