.net core View获取Session

采用Microsoft.AspNetCore.Session

HttpContext.Session.SetString("CurrentUser", “A用户名称”);

我怎么在前端判断Session CurrentUser不是空的呢,然后显示出来

0

3个回答

可以用控制器拦截,每一个请求都会判断是否登陆,未登陆则返回首页这样

 一个最基本的控制器拦截,就是当我们直接通过在地址栏输入访问路由地址时,首先应该判断用户是否已经登录,如果没有登录应该实现跳转到登录页面。大致思路是通过重写Controller的OnActionExecuting方法,在OnActionExecuting方法中判断用户是否登录并实现跳转。

3.1 新建控制器基类
在Fonour.MVC中右键Controllers文件夹,添加一个名称为FonourControllerBase的控制器基类,内容如下。

复制代码
public abstract class FonourControllerBase : Controller
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        byte[] result; 
        filterContext.HttpContext.Session.TryGetValue("CurrentUser",out result);
        if (result == null)
        {
            filterContext.Result = new RedirectResult("/Login/Index");
            return;
        }
        base.OnActionExecuting(filterContext);
    }
}
复制代码
需要进行登陆验证的控制器,修改为从FonourControllerBase继承,这里我们修改HomeController

public class HomeController : FonourControllerBase
启动程序,在未登录情况下,通过地址栏直接访问/Home/Index,会发现已经自动跳转到系统登录界面。
0

session存在于服务器上,我们可以在controller中使用session
HttpContext.Session.SetString("code","123456");

HttpContext.Session.GetString("code");

前端要用的话可以请求后端,然后后端返回值到前端

0
Liu_LY95
Liu_LY95 回复花下泥: 恩,我明白。那有没有什么方法,写一个全局变量,前端可以判断去得到的
接近 2 年之前 回复
qq_26433213
花下泥 回复Liu_LY95: viewbag每个页面都不同,你切换页面之后就是别的页面的ViewBag了,因为你在新页面没有设置viewbag,所以显示用户未登录
接近 2 年之前 回复
Liu_LY95
Liu_LY95 回复Liu_LY95: 然后在页面点击别的页面的时候,viewbag清空了,所以就显示用户未登录
接近 2 年之前 回复
Liu_LY95
Liu_LY95 我页面逻辑是这样的:有个_Layout,用户可以登录也可以不登录,用户点击登录的时候,验证通过,后台ViewBag,返回给PartialView(),局部视图判断viewBag
接近 2 年之前 回复
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
.net core2.1 发布服务器上获取不了session值
加入这句即可:   services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. opt...
.net core MVC的 Session 保存之后取不到值的解决方案
1. Startup.cs 设置 Session 相关的内容using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; u...
.NET CORE 随处可使用存放在内存中的 Session + 随处可使用Cookie
1. NUGET包引用 Microsoft.AspNetCore.Session  2. Startup.cs中的相应方法加入些代码:        //注册服务         public void ConfigureServices(IServiceCollection services)         {             ................................
ASP.NET Core 中简单Session登录校验
ASP.NET Core 中简单Session登录校验:从Session的配置添加、到请求过滤、再到页面操作。推荐相关阅读:ASP.NET 会话状态概述  ASP.NET Cookie 概述  ASP.NET 状态管理建议 ASP.NET Core 中的会话和应用状态 目录 添加Session配置服务 启用Session配置 添加用户模型 添加登录控制器 控制器基础类 登录页面视图 ...
.NET Core2.0+MVC 用session,cookie实现的sso单点登录
SSO单点登录,代码都有注释,需要发布至少三个站点,开发环境:vs2017,win10,.NET Core2.0+MVC
.Net Core学习笔记(三).View Model及跳转
Q:为什么需要ViewModel? A:因为数据库与网页间的数据并非一一对应,需要使用ViewModel对数据进行转换 对笔记(二)中的项目进行改造: 一、改造模型 public class Student { public int Id { get; set; } public string FirstName { get; set;...
.net MVC使用Session验证用户登录
用最简单的Session方式记录用户登录状态1.添加DefaultController控制器,重写OnActionExecuting方法,每次访问控制器前触发public class DefaultController : Controller { protected override void OnActionExecuting(ActionExecutingContex...
asp.net 用JWT来实现token以此取代Session
先说一下为什么要写这一篇博客吧,其实个人有关asp.net 会话管理的了解也就一般,这里写出来主要是请大家帮我分析分析这个思路是否正确。我以前有些有关Session的也整理如下: 你的项目真的需要Session吗? redis保存session性能怎么样? asp.net mvc Session RedisSessionStateProvider锁的实现 用redis来实现Session保存的一个...
两个 Asp.Net Core 2.0 项目共享登录
两个 Asp.Net Core 2.0 项目共享登录环境Win 7 64、IIS 7.5、VS 2017配置Startup.cs 中添加代码 // 添加 Cook 服务 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { optio
asp .net core 读取读取Views文件夹下的js和css
//读取Views文件夹下的js和css app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"...
ASP.NET会话丢失,Session超时配置
问题描述: asp.net应用中web.config的SessionState节点:原先是 出现时间未到会话就丢失的情况原因是该配置将Session保存在IIS进程中,不稳定,导致Session丢失 解决方法: 将参数mode修改为 StateServer,将Session状态单独存储在一个进程中,不会因为iis或者应用的重启而丢失状态 修改如下:注:使用StateServe
你注意到 .Net Framework 和 .Net Core 中使用 Session 的区别了吗?
在测试一个例子时发现的问题,这个示例实现的功能是刷新页面也能保持表格锁定列的状态,先看下页面的完成效果:测试中发现,几乎相同的代码:在 FineUIMvc(Net Fra...
ASP.NET Core HTTP 管道中的那些事儿
IApplicationBuilder IApplicationBuilder 是应用大家最熟悉它的地方应该就是位于 Startup.cs 文件中的 Configure 方法了吧 public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { app.UseDeveloperExcepti
【ASP.Net Core】不编译视图文件
ASP.Net Core 2.0开始默认会将项目视图文件编译为一个DLL文件,这在开发阶段是很费事的,因为每次改动一下页面就需要重新编译,怎样让它不编译DLL文件呢? 编辑工程文件(.csproj),加上一句 <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish> 就可以了。 参考:https://do...
.net core 生成验证码
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.DrawingCore; using System.DrawingCore.Imaging; using System.IO; usi...
.netcore2.0之后发布网站不带视图文件
记一次 .net core publish 之后找不到视图文件的问题   项目publish 之后找不到视图文件了??? 问题很是蛋疼,后来仔细想了一下,也没有动什么东西。查看了SKD 还是 2.0.0的,publish 的时候我用的是命令行,和VS没有关系。于是也没有仔细排查啊问题的根源,今天查看*.csproj文件发现了问题的根源: <PropertyGroup> ...
如何在多个项目中分离Asp.Net Core Mvc的Controller和Areas
前言 软件系统中总是希望做到松耦合,项目的组织形式也是一样,本篇文章将介绍在ASP.NET CORE MVC中怎么样将Controller与主网站项目进行分离,并且对Areas进行支持。 实践 1.新建项目 新建两个ASP.NET Core Web应用程序,一个命名为:WebHostDemo 另一个名为: Web.Controllers ,看名字可以知道第一个项目是主程序项目,第二个是
.NET Core 使用Cookie验证身份
ASP.NET Core 1.x提供了通过Cookie 中间件将用户主体序列化为一个加密的Cookie,然后在后续请求中验证Cookie并重新创建主体,并将其分配给HttpContext.User属性。如果您要提供自己的登录界面和用户数据库,可以使用作为独立功能的Cookie中间件。 ASP.NET Core 2.x的一个主要变化是不再存在Cookie中间件。取而代之的是在Startup.cs文件...
webapi mvc session一直获取不到问题
前一段时间在给移动端写接口时遇到一个调用接口发送邮箱 session 一直获取不到的问题。我来给遇到问题的同志们说一说 自个在网上查了好多资料,问了一些朋友后。终于找到解决方案了。   大家都知道webapi默认是不开启session会话支持的。所以需要Global文件中要重写方法如下:   public override void Init()         {          
启用 mvc webapi 的 session功能可用
转载自:https://www.cnblogs.com/wangqiideal/p/5356545.html 默认 mvc webapi 不开启 session 会话支持 所以需要修改配置,在 Global开启 session 支持 如下: 1.重写 init() 方法 public override void Init() { //注册事件 this....
跟着微软学ASP.NET Core(六)-Identity获取当前登陆用户
在使用了asp.net core 自带的Identity建立了项目,使得项目只带了一个带有登陆功能的项目.那么我们如何获取当前已登录的用户信息呢? 1.控制器中引入 using Microsoft.AspNetCore.Identity; 2.使用UserManager<IdentityUser> private readonly UserManager<Identi...
ASP.NET CORE 完美跨域请求
1、在nuget添加using Microsoft.AspNetCore.Cors; 2、打开Startup.cs文件,在ConfigureServices 中配置跨域 services.AddCors(options => { options.AddPolicy("any", builder => ...
Web Api跨域解决及Session使用
跨域解决 1、使用Nuget添加Cors包 2、全局跨域 3、部分方法允许跨域 如果不想所有方法都能被跨域访问,可以使用[EnableCors]属性指定,具体实现如下: a) WebApiConfig.cs文件保持开启跨域支持 b) 在方法或控制器上配置属性 跨域Session问题 1、Web Api默认关闭Session。开启方法如下: 在Global.as...
.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录
该资源在.NET Core2.0+MVC环境下 用Redis/Memory+cookie实现的sso单点登录,开发工具为vs2017,详情会有博客说明
关于asp.net mvc中的TempData对象跨视图传递数据
mvc中的TempData对象跨视图传递数据
ASP.NET 登录时保存的Session,在跳转页面后获取不到
昨天晚上加班赶工到今天下午时,一直被一个莫名其妙的问题困恼! 一个后台项目,在登录时获取基础信息保存到指定命名的Session中,登录成功后跳转页面,然后在跳转的页面后台加载Session时,发现获取不到前面保存的值,而且SessionID也发生了变化。 因为手头上还有另外一个项目,里面保存的Session方式和当前这个项目基本是一样的方式。但另一个正常,这个就取不到。 P.S. 也不是说这
NET CORE 允许跨域访问文件中间件
NET CORE 允许跨域访问文件中间件,添加自定义文件夹后。可指定相应文件访问。
.NET CORE 前端后台数据传递
.net core的数据提交有很多种方式。 (1)可以用form,Ajax提交到后台,Ajax还可以将数据返回前台。 例如 return Json(new { success = false, message = CommonConstant.S_SPACE }); Ajax传递数据时model与json的转换:JsonConvert.SerializeObject转json, JsonCo
asp.net core视图中使用Json序列化模型
asp.net core有时候需要在视图中将c#对象序列化为json格式,比如在使用ajax时。 var dataModel = @Json.Serialize(Model); 如上图所示,使用Json.Serialize就可以序列化对象,然后可以将其传递给javascript或者进行其它操作。 序列后的对象如下所示: var dataModel = {
在ASP.NET Core中实现一个Token base的身份认证
基于Token的身份认证就是应对这种变化而生的,它更开放,安全性也更高。基于Token的身份认证有很多种实现方式,但我们这里只使用微软提供的API。
Asp.Net Core MVC 更改默认视图路径
在开发MVC的过程中可能遇到这种情况:我希望我的视图可以放在自定义的文件夹下,而不是放在默认的Views文件夹下,这时我就需要更改MVC的默认路径   如图,我的移动端和PC端是两套单独设计的页面,所以我把视图拆分到了两个文件夹下:PC和Mobile,但是MVC的默认路径是找不到这两个文件夹的,所以我进行了以下更改 ASP.NET Core中有一个接口IViewLocationExpa...
跟着微软学ASP.NET Core(七)-Asp.net core2.1使用脚手架替代RCL
最近使用=asp.net core2.1 的时候遇到了和这篇提问一样的问题. 由于core 2.1 引入了Razor 类库(RCL),所以我想自定义登陆页面的时候需要使用脚手架重新创建页面来对登陆页面进行自定义. 详细的RCL信息可以看微软的文档.   那么现在我们就来看看如何覆盖RCL的页面,创建自己的登陆页面. 1.在项目新建脚手架 2选择标识 3 选择布局页\要替换的页...
ASP.NET Core中实现单体程序的事件发布/订阅
标题:ASP.NET Core中实现单体程序的事件发布/订阅 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10468058.html 项目源代码:https://github.com/lamondlu/EventHandlerInSingleApplication 背景 事件发布/订阅是一种非常强大的模式,它可以帮助业务组件间实现完全解耦...
ASP.NET Core Web应用在发布时选择是否对视图进行编译
在我们发布ASP.NET Core Web应用程序时,选择以文件形式发布,发布方法选择文件系统默认情况下,会把Views的视图文件编译成dll,如图:以PrecompiledViews.dll为结尾的文件即为视图编译文件,同时我们也看不到Views文件夹如果有频繁修改视图内容的需求,这样就很不方便解决方案:用记事本打开.csproj项目文件默认情况下是这样现在将红框部分修改为:<Proper...
解决.net core下HttpContext.Request.Body多次读取出现异常的问题
如下面的代码,使用StreamReader多次读取HttpContext.Request.Body public IActionResult SomeAction() { using (var reader = new StreamReader(Request.Body)) { var body = reader.ReadToEnd(); // ...
Asp.Net页面刷新SessionID总是变化
在Asp.net站点中,刷新页面 SessionID 变化,在网站中加入 Global.asax 解决 因为在一个没有使用Session的Web项目中,默认是无会话访问。即会话不会保持,Cookies中也不会保存SessionID。 要么使用Session,要么添加Global.asax 文件,会话就会开启
ASP.NET MVC5重写RazorViewEngine,能根据地址自定义加载视图页面文件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Transaction.Site.Models { public class MyViewEngine : RazorViewEngine {
.NET Core解决MVC视图中的中文被html编码的问题
在  .net core mvc 视图输出 变量的时候 默认使用的是 UnicodeRanges.BasicLatin  进行的编码  所以 输出中文后在查看源码的时候是进过编码了的 。 解决方案     在 Startup.cs 的 ConfigureServices() 方法中添加下面的一行代码: services.AddSingleton(HtmlEncoder.Create
ASP.net core API跨域请求的异常处理遇到的坑
首先,AP跨域请求,VS2017中nuget要加上中间件: Microsoft.AspNetCore.Cors  我使用的2.1.1版本。 然后在Startup中这样写: app.UseHttpsRedirection().UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod()....
session存储的替代方法redis
php默认使用文件存储session,如果并发量大,效率非常低。而redis对高并发的支持非常好,所以,可以使用redis替代文件存储session。 这里,介绍下php的session_set_save_handler 函数的作用和使用方法。该函数定义用户级session保存函数(如打开、关闭、写入等)。原型如下:bool session_set_save_hanler(callback