技术开发 频道

用户登陆和安全验证(利用HttpModule集中处理身份检查)


【IT168技术文档】

  因为验证用户的职责和领域类无关,所以我们将用户验证的职责分配给了UserService对象。UserService对象除了具有CRUD用户领域类的操作外。还有一个CheckLogin的方法。该方法根据用户的输入的登录名和密码。判断是否为合法用户。如果合法将返回该用户的一个对象,否则返回空。下面是CheckLogin方法的实现。
namespace ExaminationSystem.BLL.Service { public class UserService:AbstractService<User,IUserDao> { public User CheckLogin(string loginName, string password) { //从数据库获取相同登陆名对象 User example = new User(); example.LoginName = loginName; User user = Dao.GetUniqueByExample(example); if (user.Password == password) return user;//密码正确返回该用户 return null;//否则返回空 } } }
  上面代码展示的是真实的代码实现。我们可以看到用面向对象的方式编写代码代码的易读性得到大大的提高。UserService类从泛型的抽象类AbstractService继承了基本的CRUD操作。下面看看该方法由于继承带来的通用性。由于Student、Teacher、Admin都继承自User所以我们的登陆方法可以适用于所以的用户。所以我们只需要有一个用户登陆页面就可以了.
下面是登陆页面的登陆按钮的事件处理函数的实现。
protected void LoginButton_Click(object sender, EventArgs e) { UserService service = new UserService(); User user = service.CheckLogin(LoginNameTextBox.Text, PasswordTextBox.Text); if (user is Student) { Session["User"] = user; Response.Redirect("Student/Default.aspx"); } if (user is Teacher) { Session["User"] = user; Response.Redirect("Teacher/Subject.aspx"); } if (user is Admin) { Session["User"] = user; Response.Redirect("Admin/Admin.aspx"); } if (user == null) { MessageLabel.Text = "用户信息不正确!"; } }
0
相关文章