导航:首页 > IDC知识 > mvc域名间session共享

mvc域名间session共享

发布时间:2021-01-06 21:43:08

1、MVC3中如何让session跨Controller页面

Session本身就是跨页面的啊,直接使用就行了。

而且MVC不推荐在页面中使用Session,因为按照规范所有输入的对象都应该是已经定义好的Model的。

2、MVC cshtml 怎样使用Session

Session共享的解决方案
1、客户端SessionID值唯一;
对于不同的域名:主域名、子域名、跨站点域名或跨服务器域名,用户在打开页面时会产生不同的SessionID,
为了使这些站点在用户登录时只登录一次,那我们就要解决SessionID的问题,必须使SessionID在这些共享Session的站点中只产生一次。而SessionID是存储在客户端的cookie之中键值为ASP.NET_SessionId的一个字符串(也可以存储在URL中,这里不作使介绍),为此只须使各站点存储的SP.NET_SessionId唯一即可。
因每个客户端在打开时会产生一个SessionID,为此我们要做的就是重置SessionID。我们可以在继承HttpMole,在结束请求时重写SessionID
代码:
public class MakeSessionIDOneOnly : IHttpMole
{
private string m_RootDomain = string.Empty;
public void Dispose()
{
}
public void Init(HttpApplication context)
{
m_RootDomain = ConfigurationManager.AppSettings["RootDomain"];
Type stateServerSessionProvider = typeof(HttpSessionState).Assembly.GetType("System.Web.SessionState.OutOfProcSessionStateStore");
FieldInfo uriField = stateServerSessionProvider.GetField("s_uribase", BindingFlags.Static | BindingFlags.NonPublic);
if (uriField == null)
throw new ArgumentException("UriField was not found");
uriField.SetValue(null, m_RootDomain);
context.EndRequest += new System.EventHandler(context_EndRequest);
}
void context_EndRequest(object sender, System.EventArgs e)
{
HttpApplication app = sender as HttpApplication;
for (int i = 0; i < app.Context.Response.Cookies.Count; i++)
{
if (app.Context.Response.Cookies[i].Name == "ASP.NET_SessionId")
{
app.Context.Response.Cookies[i].Domain = m_RootDomain;
}
}
}
}
为使用以上代码,须配置下面节点项。
<httpMoles>
<add name="节点名称" type="类名全称, 程序集"/>
</httpMoles>

3、MVC session问题

public class LoginServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException,IOException{
//....

LoginService ls = null;
User user = null;
RequestDispatcher rd = null;
String us =null;
String pwd = null;
String rold = null;
PrintWriter pw = null;
try {
resp.setCharacterEncoding("GBK");
pw = resp.getWriter();
ls = new LoginService(new UserDAOImpl());
us = req.getParameter("ename");
pwd = req.getParameter("password");
String rol = req.getParameter("role");

if(rol.equals("0"))
rold="管理员";
else if(rol.equals("1"))
rold="老师";
else rold="学生";
//按照用户名、密码查询用户合法性
user = ls.queryUser(us, pwd,rold);

} catch (UserAuthException e) {
//当发生异常时把请求转发到错误页面
rd = req.getRequestDispatcher("/message.jsp");
req.setAttribute("message", "用户名或密码错误");
req.setAttribute("link","<a href='login.jsp'>请重试!</a>");
rd.forward(req, resp);
return;
}

//若登录成功则把用户作为session范围的属性存放
HttpSession ss = req.getSession();
ss.setAttribute(Constant.LOGIN_USER, user);

if(rold.equals("管理员")){
rd = req.getRequestDispatcher("/manager.jsp");
rd.forward(req,resp);
}else{
rd = req.getRequestDispatcher("/welcome.jsp");
rd.forward(req, resp);
return;
}

}

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException,IOException{
doGet(req, resp);
}

}

4、ASP MVC怎么实现多个会话之间的数据共享

用静态类缓存,在应用程序重启之前数据都是共享存在的。
或者保存到第三方缓存系统或数据库里

5、mvc登录怎么设置session

httpcontext.user是ASP.NET中内置抄的用户验证机制袭,它的对象必须实现IPrincipal接口,而Iprincipal定义的属性之一是Identity,它必须实现Iidentity接口,要写了实现这两个接口的类,

6、[MVC4]在两个controller中用session传值问题?

这样就行了
System.Web.HttpContext.Current.Session["code"] 不然它是controller里的session mvc里面可以用TempData等替代的

7、MVC中的Session怎么了

具体设置很简单,方法有三种:

(1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(600);参数600单位是秒,即在没有10分钟活动后,session将失效。

这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。

(2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置

<!-- 设置session失效,单位分 -->

<session-config>

<session-timeout>1</session-timeout>

</session-config>
// 设置为0,-1 表示永不超时

(3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到元素,tomcat默认设置是30分钟,只要修改这个值就可以了。

<!-- ==================== Default Session Configuration ================= -->
<!-- You can set the default session timeout (in minutes) for all newly -->
<!-- created sessions by modifying the value below. -->

<session-config>
<session-timeout>30</session-timeout>
</session-config>
需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:(1)>(2)>(3)

8、asp.net MVC在web.config里配置sessionstate,可以让服务端获取网址中的sessionid或者获取cookie里的sess

把状态写在cookie中,先取网址,再取cookie

9、spring mvc ajax 请求时为何不能共用一session,它会新建一个session

可以共用啊

10、MVC分部视图之间怎么共享数据

一个视图对应一个控制器,视图要显示数据,就要先执行控制器。在控制器里面用Session或者回cookie实现共享。或者视图答A要显示视图B的内容,试图A对应的控制器“调用”试图B对应的控制器里面的实现也是可以的。

与mvc域名间session共享相关的知识