MVC 登录后重定向回最初请求的 URL FormsAuthentication.RedirectFromLoginPage
在传统的Asp.net webForm 中如果使用 Form身份验证。登录后重定向到最初请求的页面只需使用
FormsAuthentication.RedirectFromLoginPage
但在MVC中,MVC可不吃这一套。试了很多方法都不行。但最终还是搞定了。之所以标题中写到“FormsAuthentication.RedirectFromLoginPage”。是因为我一开始不停的在Google中找“FormsAuthentication.RedirectFromLoginPage”这个关键字想到找到这个要怎么样应用到MVC中。或者在MVC中有没有替代的写法。没有成功但受到了一些启发。
因为没有登录用户如果不是直接访问登录页是会被重定向到登录页面。并且URL后面会跟上“ReturnUrl”参数记录是从哪个页面跳转过来的。
那么我们可以这样操作
1.在登录的“Action” 方法中接收“ReturnUrl”参数。
2.在验证登录的“Action”方法中登录成功后,判断如果“ReturnUrl”不为空就跳转到“ReturnUrl”指向的页面。
代码:
1.实体:
在登录的实体中增加了“ReturnUrl”参数用于接收登录前的页面地址
public class LoginInfo
{
public string LoginName { get; set; } public string LoginPwd { get; set; } public string SecurityCode { get; set; } public string ReturnUrl { get; set; }
}
2.登录页面的Action
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.returnUrl = returnUrl; return View();
}
3.登录页面视图
辅助方法“@Html.Hidden("returnUrl")”会自动的生成“<input id="returnUrl" name="returnUrl" type="hidden">”HTML代码,并且绑定“ViewBag.returnUrl”属性。
<form action="/User/Login" method="post">
<input type="text" name="LoginName" />
<input type="password" name="LoginPwd" />
<input type="text" name="SecurityCode" />
<img id="veri_code" src="@Url.Action("AuthenticationCode", new { r = new Random().NextDouble() })" width="65" height="23" class="identify_code" alt="验证码" />
<a href="javascript:void(0);" onclick="refreshCode()">刷新</a>
<input type="submit" value="登录" />
@Html.Hidden("returnUrl")
</form>
4.执行登录验证的Action
[HttpPost]
[AllowAnonymous]
public void Login(LoginInfo login)
{
if (login.SecurityCode != SessionUtil.AuthenticationCode)
throw new BusinessException("验证码错误"); var user = UserService.Instance.Login(login.LoginName, login.LoginPwd);
SessionUtil.Current = user; FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
, user.Id.ToString(), DateTime.Now, DateTime.Now.AddYears(),
true, string.Empty, FormsAuthentication.FormsCookiePath); string ticString = FormsAuthentication.Encrypt(ticket); HttpCookie coo = new HttpCookie(FormsAuthentication.FormsCookieName, ticString); if (ticket.IsPersistent)
{
coo.Expires = ticket.Expiration;
} Response.Cookies.Add(coo);if (string.IsNullOrWhiteSpace(login.ReturnUrl))
Response.Redirect("/PublicAccountWater/Index");
else
Response.Redirect(login.ReturnUrl);
}
MVC 登录后重定向回最初请求的 URL FormsAuthentication.RedirectFromLoginPage的更多相关文章
- MVC 登录后重定向来最初请求的 URL
1.在登录的“Action” 方法中接收“ReturnUrl”参数. 2.在验证登录的“Action”方法中登录成功后,判断如果“ReturnUrl”不为空就跳转到“ReturnUrl”指向的页面. ...
- WordPress用户登录后重定向到指定页面
这篇文章将向您展示WordPress用户登录后如何重定向到指定页面或者文章的技巧. 一.重定向到网站管理面板. 将以下代码添加到您的当前主题的 functions.php 文件中: function ...
- 前端开发入门到进阶第三集【获取cookie然后单点登录后重定向】
/* var token ;//https://blog.csdn.net/qq_29207823/article/details/81745757 if( $.cookie('BBK_TOKEN') ...
- yii中登录后跳转回登录前请求的页面
当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面.比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转到我们之前希 ...
- 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- 九、封装登录POST请求、登录后POST请求以及GET请求
一.封装登录后POST请求以及GET请求 /** * 全局运行时环境参数管理器 */ public static Map<String, String> BASE_GLOBAL_MAP; ...
- Django学习系列16:处理完POST请求后重定向
处理完POST请求后重定向 代码中new_item_text = ''的写法不怎么样.解决第二个问题时候,顺带把这个问题也解决了. 人们都说处理完post请求后一定要重定向,接下来就实现这个功能吧.修 ...
- 转---在ASP.NET MVC中实现登录后回到原先的界面
有这样的一个需求:提交表单,如果用户没有登录,就跳转到登录页,登录后,跳转到原先表单提交这个页面,而且需要保持提交表单界面的数据. 提交表单的页面是一个强类型视图页,如果不考虑需要保持提交表单界面的数 ...
- persistence_timeout ,域名请求登录后一操作即被踢出,,KeepAlive,lvs
virtual_server *.*.*.* 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP ...
随机推荐
- 百度地图 创建 自定义控件(vue)
1.组件代码 Bmap.vue <!-- 离线地图 组件 --> <template> <div id="map" :style="styl ...
- asp .net 为图片添加图片水印 .
首先写好一个写入图片水印的类,先创建一个ImageWriter类库 (该类中有包含枚举类型和方法) using System; using System.Collections.Generic; ...
- H5实现多图片预览上传,可点击可拖拽控件介绍
版权声明:欢迎转载,请注明出处:http://blog.csdn.net/weixin_36380516 在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到 ...
- javascript 高级编程系列 - 函数
一.函数创建 1. 函数声明 (出现在全局作用域,或局部作用域) function add (a, b) { return a + b; } function add(a, b) { return a ...
- 话题讨论&征文--谈论大数据时我们在谈什么 获奖名单发布
从社会发展趋势的角度,非常明显大数据会是眼下肉眼可及的视野范围里能看到的最大趋势之中的一个.从传统IT 业到互联网.互联网到移动互联网,从以智能手机和Pad 为主要终端载体的移动互联网到可穿戴设备的移 ...
- Connection Phase Packets
Connection Phase Packets https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet ...
- Object/Relational Mapping 数学关系 反面向对象
[hibernate ORM 是对象关系映射框架 事实上的持久化存储引擎] http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/ ...
- LESS和sa
一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...
- javascript JSON.parse和eval的区别
SON.parse()用来将标准json字符串转换成js对象:eval()除了可以将json字符串(非标准的也可以,没有JSON.parse()要求严格)转换成js对象外还能用来动态执行js代码.例如 ...
- android开发基础知识了解
JDK下载:www.oracle.com; SDK下载:www.android.developer.com; eclipse下载:www.eclipse.org;