reactjs - 我如何通过反应组件上的.net核心获取会话数据
问题描述
我已经在控制器中设置了会话,现在我想在反应页面即布局组件中获取该会话信息。
这是我在控制器上的登录操作。
public IActionResult Login(LoginModel loginModel) { if (_loginRepository.Login(loginModel.Email, loginModel.Password) == true) { var user = _context.AgencyAdminUser.FirstOrDefault(x => x.Email == loginModel.Email); var key = Encoding.ASCII.GetBytes("YourKey-2374-OFFKDI940NG7:56753253-tyuw-5769-0921-kfirox29zoxv"); //Generate Token for user - JRozario var JWToken = new JwtSecurityToken( issuer: "http://localhost:45092/", audience: "http://localhost:45092/", claims: GetUserClaims(user), notBefore: new DateTimeOffset(DateTime.Now).DateTime, expires: new DateTimeOffset(DateTime.Now.AddDays(1)).DateTime, //Using HS256 Algorithm to encrypt Token - JRozario signingCredentials: new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) ); var token = new JwtSecurityTokenHandler().WriteToken(JWToken); if (token != null) { //Save token in session object HttpContext.Session.SetString("JWToken", token); } return RedirectToAction("Index", "Home"); } else { ViewBag.Message = "Enter Valid Email Address!"; return View(); } }
这是我的布局反应组件
import * as React from 'react'; import { NavMenu } from './NavMenu'; export interface LayoutProps { children?: React.ReactNode; } export class Layout extends React.Component<LayoutProps, {}> { public render() { return <div className='kt-quick-panel--right kt-demo-panel--right kt-offcanvas-panel--right kt-header--fixed kt-header-mobile--fixed kt-subheader--fixed kt-subheader--enabled kt-subheader--solid kt-aside--enabled kt-aside--fixed kt-page--loading'> <div className='d-grid kt-grid--hor kt-grid--root'> <div className='kt-grid__item kt-grid__item--fluid kt-grid kt-grid--ver kt-page'> <NavMenu /> </div> <div className="kt-grid__item kt-grid__item--fluid kt-grid kt-grid--hor kt-wrapper" id="kt_wrapper"> <div id="kt_header" className="kt-header kt-grid__item kt-header--fixed "> <button className="kt-header-menu-wrapper-close" id="kt_header_menu_mobile_close_btn"><i className="la la-close"></i></button> <div className="kt-header-menu-wrapper" id="kt_header_menu_wrapper"> <div id="kt_header_menu" className="kt-header-menu kt-header-menu-mobile kt-header-menu--layout-default "> <ul className="kt-menu__nav "> <li className="kt-menu__item kt-menu__item--open kt-menu__item--here kt-menu__item--submenu kt-menu__item--rel kt-menu__item--open kt-menu__item--here kt-menu__item--active" data-ktmenu-submenu-toggle="click" aria-haspopup="true"><a href="javascript:;" className="kt-menu__link kt-menu__toggle"><span className="kt-menu__link-text">Pages</span><i className="kt-menu__ver-arrow la la-angle-right"></i></a> <div className="kt-menu__submenu kt-menu__submenu--classic kt-menu__submenu--left"> <ul className="kt-menu__subnav"> <li className="kt-menu__item kt-menu__item--active " aria-haspopup="true"><a href="index.html" className="kt-menu__link "><span className="kt-menu__link-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" version="1.1" className="kt-svg-icon"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <rect id="bound" x="0" y="0" width="24" height="24" /> <path d="M5.84026576,8 L18.1597342,8 C19.1999115,8 20.0664437,8.79732479 20.1528258,9.83390904 L20.8194924,17.833909 C20.9112219,18.9346631 20.0932459,19.901362 18.9924919,19.9930915 C18.9372479,19.9976952 18.8818364,20 18.8264009,20 L5.1735991,20 C4.0690296,20 3.1735991,19.1045695 3.1735991,18 C3.1735991,17.9445645 3.17590391,17.889153 3.18050758,17.833909 L3.84717425,9.83390904 C3.93355627,8.79732479 4.80008849,8 5.84026576,8 Z M10.5,10 C10.2238576,10 10,10.2238576 10,10.5 L10,11.5 C10,11.7761424 10.2238576,12 10.5,12 L13.5,12 C13.7761424,12 14,11.7761424 14,11.5 L14,10.5 C14,10.2238576 13.7761424,10 13.5,10 L10.5,10 Z" id="Combined-Shape" fill="#000000" /> <path d="M10,8 L8,8 L8,7 C8,5.34314575 9.34314575,4 11,4 L13,4 C14.6568542,4 16,5.34314575 16,7 L16,8 L14,8 L14,7 C14,6.44771525 13.5522847,6 13,6 L11,6 C10.4477153,6 10,6.44771525 10,7 L10,8 Z" id="Path-53" fill="#000000" fill-rule="nonzero" opacity="0.3" /> </g> </svg></span><span className="kt-menu__link-text">My Account</span></a></li> <li className="kt-menu__item " aria-haspopup="true"><a href="javascript:;" className="kt-menu__link "><span className="kt-menu__link-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" version="1.1" className="kt-svg-icon"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <rect id="bound" x="0" y="0" width="24" height="24" /> <path d="M2.56066017,10.6819805 L4.68198052,8.56066017 C5.26776695,7.97487373 6.21751442,7.97487373 6.80330086,8.56066017 L8.9246212,10.6819805 C9.51040764,11.267767 9.51040764,12.2175144 8.9246212,12.8033009 L6.80330086,14.9246212 C6.21751442,15.5104076 5.26776695,15.5104076 4.68198052,14.9246212 L2.56066017,12.8033009 C1.97487373,12.2175144 1.97487373,11.267767 2.56066017,10.6819805 Z M14.5606602,10.6819805 L16.6819805,8.56066017 C17.267767,7.97487373 18.2175144,7.97487373 18.8033009,8.56066017 L20.9246212,10.6819805 C21.5104076,11.267767 21.5104076,12.2175144 20.9246212,12.8033009 L18.8033009,14.9246212 C18.2175144,15.5104076 17.267767,15.5104076 16.6819805,14.9246212 L14.5606602,12.8033009 C13.9748737,12.2175144 13.9748737,11.267767 14.5606602,10.6819805 Z" id="Combined-Shape" fill="#000000" opacity="0.3" /> <path d="M8.56066017,16.6819805 L10.6819805,14.5606602 C11.267767,13.9748737 12.2175144,13.9748737 12.8033009,14.5606602 L14.9246212,16.6819805 C15.5104076,17.267767 15.5104076,18.2175144 14.9246212,18.8033009 L12.8033009,20.9246212 C12.2175144,21.5104076 11.267767,21.5104076 10.6819805,20.9246212 L8.56066017,18.8033009 C7.97487373,18.2175144 7.97487373,17.267767 8.56066017,16.6819805 Z M8.56066017,4.68198052 L10.6819805,2.56066017 C11.267767,1.97487373 12.2175144,1.97487373 12.8033009,2.56066017 L14.9246212,4.68198052 C15.5104076,5.26776695 15.5104076,6.21751442 14.9246212,6.80330086 L12.8033009,8.9246212 C12.2175144,9.51040764 11.267767,9.51040764 10.6819805,8.9246212 L8.56066017,6.80330086 C7.97487373,6.21751442 7.97487373,5.26776695 8.56066017,4.68198052 Z" id="Combined-Shape" fill="#000000" /> </g> </svg></span><span className="kt-menu__link-text">Task Manager</span><span className="kt-menu__link-badge"><span className="kt-badge kt-badge--success">2</span></span></a></li> <li className="kt-menu__item kt-menu__item--submenu" data-ktmenu-submenu-toggle="hover" aria-haspopup="true"><a href="javascript:;" className="kt-menu__link kt-menu__toggle"><span className="kt-menu__link-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" version="1.1" className="kt-svg-icon"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <rect id="bound" x="0" y="0" width="24" height="24" /> <path d="M9,15 L7.5,15 C6.67157288,15 6,15.6715729 6,16.5 C6,17.3284271 6.67157288,18 7.5,18 C8.32842712,18 9,17.3284271 9,16.5 L9,15 Z M9,15 L9,9 L15,9 L15,15 L9,15 Z M15,16.5 C15,17.3284271 15.6715729,18 16.5,18 C17.3284271,18 18,17.3284271 18,16.5 C18,15.6715729 17.3284271,15 16.5,15 L15,15 L15,16.5 Z M16.5,9 C17.3284271,9 18,8.32842712 18,7.5 C18,6.67157288 17.3284271,6 16.5,6 C15.6715729,6 15,6.67157288 15,7.5 L15,9 L16.5,9 Z M9,7.5 C9,6.67157288 8.32842712,6 7.5,6 C6.67157288,6 6,6.67157288 6,7.5 C6,8.32842712 6.67157288,9 7.5,9 L9,9 L9,7.5 Z M11,13 L13,13 L13,11 L11,11 L11,13 Z M13,11 L13,7.5 C13,5.56700338 14.5670034,4 16.5,4 C18.4329966,4 20,5.56700338 20,7.5 C20,9.43299662 18.4329966,11 16.5,11 L13,11 Z M16.5,13 C18.4329966,13 20,14.5670034 20,16.5 C20,18.4329966 18.4329966,20 16.5,20 C14.5670034,20 13,18.4329966 13,16.5 L13,13 L16.5,13 Z M11,16.5 C11,18.4329966 9.43299662,20 7.5,20 C5.56700338,20 4,18.4329966 4,16.5 C4,14.5670034 5.56700338,13 7.5,13 L11,13 L11,16.5 Z M7.5,11 C5.56700338,11 4,9.43299662 4,7.5 C4,5.56700338 5.56700338,4 7.5,4 C9.43299662,4 11,5.56700338 11,7.5 L11,11 L7.5,11 Z" id="Path-2" fill="#000000" fill-rule="nonzero" /> </g> </svg></span><span className="kt-menu__link-text">Team Manager</span><i className="kt-menu__hor-arrow la la-angle-right"></i><i className="kt-menu__ver-arrow la la-angle-right"></i></a> <div className="kt-menu__submenu kt-menu__submenu--classic kt-menu__submenu--right"> <ul className="kt-menu__subnav"> <li className="kt-menu__item " aria-haspopup="true"><a href="javascript:;" className="kt-menu__link "><i className="kt-menu__link-bullet kt-menu__link-bullet--dot"><span></span></i><span className="kt-menu__link-text">Add Team Member</span></a></li> <li className="kt-menu__item " aria-haspopup="true"><a href="javascript:;" className="kt-menu__link "><i className="kt-menu__link-bullet kt-menu__link-bullet--dot"><span></span></i><span className="kt-menu__link-text">Edit Team Member</span></a></li> <li className="kt-menu__item " aria-haspopup="true"><a href="javascript:;" className="kt-menu__link "><i className="kt-menu__link-bullet kt-menu__link-bullet--dot"><span></span></i><span className="kt-menu__link-text">Delete Team Member</span></a></li> <li className="kt-menu__item " aria-haspopup="true"><a href="javascript:;" className="kt-menu__link "><i className="kt-menu__link-bullet kt-menu__link-bullet--dot"><span></span></i><span className="kt-menu__link-text">Team Member Reports</span></a></li> <li className="kt-menu__item " aria-haspopup="true"><a href="javascript:;" className="kt-menu__link "><i className="kt-menu__link-bullet kt-menu__link-bullet--dot"><span></span></i><span className="kt-menu__link-text">Assign Tasks</span></a></li> <li className="kt-menu__item " aria-haspopup="true"><a href="javascript:;" className="kt-menu__link "><i className="kt-menu__link-bullet kt-menu__link-bullet--dot"><span></span></i><span className="kt-menu__link-text">Promote Team Member</span></a></li>
我想在上面存储在会话信息中的组件代码中使用 FirstName;
解决方案
Reactjs 是客户端,您的 .net 核心代码是服务器端。
会话变量不能直接从 Reactjs 访问。更好地将所需的值添加到 cookie 并使用 ReactJs 访问它们
推荐阅读
- pdf - 如何使用 ASP.NET Core MVC 创建自己的 pdf 文件?
- reactjs - 无法将道具传递给材质 ui makeStyles
- pdf - 通过 Itext 5.5.5 签署文档时不符合 PDF/A
- ajax - WordPress - 使用 ajax 和 admin-ajax.php 获取服务器时间
- python-3.x - 熊猫分组并将行转换为多列
- javascript - 为什么一个字符串中的这个数值在其他字符串之间会变成一个字符串?
- reactjs - 只是想找出使用 useReducer + context hooks 的最佳实践
- scala - Spark查询在同类数据上的性能差异
- android - 编辑视图中的文本未垂直对齐
- python - 在python中的quiverplot(矢量场图)上放置标题