新手程序员,求解一个关于MVC验证登陆的问题

想用服务器session来实现验证登陆状态的功能

业务逻辑代码如下

 public User Login(string username,string pwd)
        {
            DAL.AboutUser au = new DAL.AboutUser();
            User user = au.Login(username, pwd);
            if (user != null)
            {
                HttpContext.Current.Session["CurrentUser"] = user;
                return user;
            }
            else
            {
                return null;
            }
        }

控制器里面的代码是这样的

 namespace ACMwebOnline.Controllers
{
    public class UserController : Controller
    {
        //
        // GET: /User/
        public AboutUser hm = new AboutUser();

        public ActionResult Index()
        {
            if (Session["CurrentUser"] != null)
            {
                var u = (User)Session["CurrentUser"];
                ViewData.Model = u;
                return View("UserInfo");
            }
            //登陆
            var username = Request["username"];
            var pwd = Request["pwd"];
            User user = null;
            if (username != null && pwd != null)
            {
                user = hm.Login(username, pwd);
                if (user != null)
                {
                    var u = (User)Session["CurrentUser"];
                    ViewData.Model = u;
                    return View("UserInfo");
                }
                return Content("no:用户名密码错误");
            }
            return View("Login");
        }
    }
}

现在的问题:
我的思路是在业务逻辑层登陆成功的时候在服务器中存储session,然后再次访问这个控制器的时候通过验证session是否为空来决定返回登陆页面还是登陆信息页面~
代码就是上面的,可是运行实际情况是出现了登陆页面,但是输完账号密码之后还是出现登陆页面~是不是session存储出现了问题~新手程序员,求前辈们指点

先调试看看User user = au.Login(username, pwd);这里执行得结果是什么