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]  //只接受Post方式的请求
[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(
1, user.Id.ToString(), DateTime.Now, DateTime.Now.AddYears(1),
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的更多相关文章

  1. MVC 登录后重定向回最初请求的 URL FormsAuthentication.RedirectFromLoginPage

    在传统的Asp.net webForm 中如果使用 Form身份验证.登录后重定向到最初请求的页面只需使用 FormsAuthentication.RedirectFromLoginPage 但在MV ...

  2. WordPress用户登录后重定向到指定页面

    这篇文章将向您展示WordPress用户登录后如何重定向到指定页面或者文章的技巧. 一.重定向到网站管理面板. 将以下代码添加到您的当前主题的 functions.php 文件中: function  ...

  3. 前端开发入门到进阶第三集【获取cookie然后单点登录后重定向】

    /* var token ;//https://blog.csdn.net/qq_29207823/article/details/81745757 if( $.cookie('BBK_TOKEN') ...

  4. 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  5. yii中登录后跳转回登录前请求的页面

    当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面.比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转到我们之前希 ...

  6. 九、封装登录POST请求、登录后POST请求以及GET请求

    一.封装登录后POST请求以及GET请求 /** * 全局运行时环境参数管理器 */ public static Map<String, String> BASE_GLOBAL_MAP; ...

  7. Django学习系列16:处理完POST请求后重定向

    处理完POST请求后重定向 代码中new_item_text = ''的写法不怎么样.解决第二个问题时候,顺带把这个问题也解决了. 人们都说处理完post请求后一定要重定向,接下来就实现这个功能吧.修 ...

  8. 转---在ASP.NET MVC中实现登录后回到原先的界面

    有这样的一个需求:提交表单,如果用户没有登录,就跳转到登录页,登录后,跳转到原先表单提交这个页面,而且需要保持提交表单界面的数据. 提交表单的页面是一个强类型视图页,如果不考虑需要保持提交表单界面的数 ...

  9. persistence_timeout ,域名请求登录后一操作即被踢出,,KeepAlive,lvs

    virtual_server *.*.*.* 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP ...

随机推荐

  1. JavaSE-20 IO序列化

    学习要点 定义 IO如何序列化 序列化 序列化:是将对象的状态存储到特定存储介质中的过程. 反序列化:从特定存储介质中的数据重新构建对象的过程. 实现了java.io.Serializable接口的类 ...

  2. LAME的“命令行”

    VBR 编码 (强烈推荐) Alt Preset Extreme (平均256kbps) 我们有时在网上可以看到".LAME-APX." 就是这种形式,我们也可以在文件名中包含这个 ...

  3. 第1节 MapReduce入门:mapreduce的wordcount程序执行问题

    执行时报错: 19/06/03 23:00:41 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs. ...

  4. javascript中常见undefined与defined的区别

    在JavaScript中相信“undefined”与“defined”对大家来说都肯定不陌生,但是又不是很清楚它们的区别,先看两个demo我们再说, 例1. console.log(parms); / ...

  5. http请求体笔记

    一.请求体数据格式 1.application/json:json格式 2.text/plain:纯文本格式 3.application/x-www-form-urlencoded:url编码后产生的 ...

  6. rbac组件之菜单操作(三)

    菜单包括菜单列表,菜单列表不仅将菜单列出来,而且将每个菜单下的权限也列出来.菜单的添加.删除.修改. urls.py ... re_path(r'^menus/list/$', MenuView.as ...

  7. IDE简介

    IDE(Integrated Development Environment) 集成开发环境 十种集成开发工具: 微软 Visual Studio (VS) NetNeans PyCharm Inte ...

  8. Matplotlib中的颜色

    使用matplotlib中会遇到选择颜色的问题,很多人会觉得自带的matlab风格的颜色不好看.好在Matplotlib已经预见到了这个问题,除了支持最基本的matlab传统颜色之外,还支持很多种颜色 ...

  9. 笔记——python语言规范

    Lint 对你的代码运行pylint 定义: pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dynamic)语言, 这些bug ...

  10. java-得到字符串中出现次数最最多的字符,并打印出字符以及出现次数

    最近面试总被面试到,整理出几种方式(有参考别人的部分) /** * java一个字符串中出现次数最多的字符以及次数 * @param args */ public static void main(S ...