MVC中Session的使用和传递

1.登录时在controller中记录session,代码如下:

 public ActionResult Login(UserLoginViewModel uViewModel)
        {
            if (ModelState.IsValid)
            {
                var user = db.ADUsers.SingleOrDefault(t => t.usrName == uViewModel.usrName && t.usrPassword == uViewModel.usrPassword);

                if (user != null)
                {
                    FormsAuthentication.SetAuthCookie(uViewModel.usrName, false);//将用户名放入Cookie中
                    System.Web.HttpContext.Current.Session["usrName"] = uViewModel.usrName; //将用户名放入session中

                    return RedirectToAction("Index","Home");
                }
                else
                {
                    ModelState.AddModelError("usrName", "用户名不存在!");
                }
            }
            return View(uViewModel);
        }

2.在View中,可以根据session进行判断是否正常登录

@if (Session["usrName"] != null)
{
    using (Html.BeginForm("LogOff", "ADUsers", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
    {
        @Html.AntiForgeryToken()

        <ul class="nav navbar-nav navbar-right">
            <li>
                @Html.ActionLink("你好," + Session["usrName"] + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
            </li>
            <li><a href="javascript:document.getElementById(‘logoutForm‘).submit()">注销</a></li>
        </ul>
    }
}
else
{
    <ul class="nav navbar-nav navbar-right">
        <li>@Html.ActionLink("登录", "Login", "ADUsers", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
        <li>cookies:@Session["usrName"];</li>
    </ul>

3.注销时,记得将session清空

        public ActionResult LogOff()
        {
            FormsAuthentication.SignOut();
            System.Web.HttpContext.Current.Session["usrName"] = null;
            return RedirectToAction("Login");
        }
时间: 2024-07-29 16:36:04

MVC中Session的使用和传递的相关文章

mvc中的几个数据传递

1.ViewData对象 ViewBagData是一种字典集合数据同时属于视图基类和控制器基类的属性. 实例: //控制器 public class HomeController:Controller { public ActionResult Index() { ViewData["data"]="Hello asp.net"; return View(); } } 视图: <h1><%=ViewData["data"]%&g

mvc中session的几点注意事项

session在controller中传递出现空值 session在controller传值到view也是空值 session时默认引用的是System.Web.Mvc.Controll.session,可能这个session不能传递, 所以解决方法就是详细定义session,我们可以定义System.Web.HttpContext.Current.Session可以解决这个问题

MVC中前台如何向后台传递数据------$.get(),$post(),$ajax(),$.getJSON()总结

一.引言 MVC中view向controller传递数据的时候真心是一个挺让人头疼的一件事情.因为原理不是很懂只看一写Dome,按葫芦画瓢只能理解三分吧. 二.解读Jquery个Ajax函数 $.get(),$.post(),$.ajax(),$.getJSON() 1.$.get(url,[data],[callback]) 参数说明 url:请求地址,MVC中一般为:“/QueryScores/Search/” (/controller/action/) data:请求数据列表,MVC中ac

Spring MVC中Session的正确用法&lt;转&gt;

Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的设计模式遍及各处,使得其框架虽然学习曲线陡峭,但 一旦掌握则欲罢不能.初学者并不需要过多了解框架的实现原理,随便搜一下如何使用“基于注解的controller”就能很快上手,而一些书籍诸如 “spring in action”也给上手提供了非常优良的选择. 网上的帖子多如牛毛,中文的快速上手,英文的

asp.net MVC 中 Session统一验证的方法

验证登录状态的方法有:1  进程外Session   2 方法过滤器(建一个类继承ActionFilterAttribute)然后给需要验证的方法或控制器加特性标签 3 :新建一个BaseController  继承Controller   把后面需要验证的控制器都改成继承BaseController   而不是Controller [csharp] view plain copy print? namespace Core.ProjectOA.WebApp.Controllers { publ

.net mvc中session的锁机制

今天遇到个奇怪的问题, 一个秒杀商品系统, 大量秒杀请求进来, 到了action居然是单线程执行! 这样产生的效果就是"这个系统好慢啊!!". 可是我没有加lock,为什么会变成单线程执行呢? 找资料才知道, session有个锁机制. 资料内容: 和数据库的锁一样, 分共享锁和排它锁. 共享锁占用时,排它锁必须等待,而另一个共享锁可以同事访问: 排它锁占用时,其他所有锁都必须等待. 两个锁的持续时间都是整个action走完才释放.类似于Repeatable以上的事务隔离级别. 而我的

ASP.NET MVC中的两个Action之间值的传递--TempData

一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictionary,顾名思义是一个字典类.TempData在ASP.NET MVC中的作用是:可用于在Action执行过程之间传值.简单的说,你可以在执行某个Action的时候,将数据存放在TempData中,那么在下一次Action执行过程中可以使用TempData中的数据. 如: 1 public Actio

ASP.NET MVC中Controller与View之间的数据传递总结

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: Ø Controller向View传递数据 Ø View向Controller传递数据 一.Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData[“Message”] = “Hello word!”; 然后在View中读取Controller中

在ASP.Net MVC 中如何实现跨越Session的分布式TempData

Hi,guys!Long time no see! 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也都知道TempData是用Session来实现的,既然是用Session来实现的,那么模式就是线程模式,这样的Session是没法用到分布式系统中的,那么在多台机器上部署,怎么做到Session在多台机器中共存,这就涉及到分布式存储.那该如何实现TempData的分布式存储?在讲如何实现时,先给大家