ASP.NET 4.0中,使用默认的身份认证,在web.config中配置如下:
<authentication mode="Forms"> <forms defaultUrl="~/" loginUrl="~/Account/Login" name=".ticket" timeout="30" slidingExpiration="true" /> </authentication> <authorization> <deny users="?" /> </authorization>
默认情况下,身份失效时浏览器会跳转到登录页,并在后面带returnUrl参数,参数值为跳转前的url,现在想重写这个跳转事件,自定义跳转的url以及参数,怎么办?
可以通过中转站实现
<authentication mode="Forms"> <forms defaultUrl="~/" loginUrl="~/Account/Relay" name=".ticket" timeout="30" slidingExpiration="true" />
在 Relay Action 中“自定义跳转的url以及参数”并 Redirect
比如:跳转之前url为http://www.a.com/Home/Index,由于没有登录,现在需求需要跳转到http://login.a.com页面进行登录之后返回到http://www.a.com/Home/Index。
按照你说的方法,先跳转到http://www.a.com/Account/Relay,但是这时候returnUrl为/Home/Index,并不是完整的http://www.a.com/Home/Index,并且我还需要其他的一些额外的在http://www.a.com/Home/Index中的数据,这时候Account/Relay中已经没有这些额外数据了。。。
其实我就是在想,有没有一个解决办法可以重写跳转到loginUrl的方法,这样http://www.a.com/Home/Index的数据应该就不会丢失
就算是你能在web.config灵活设置加上返回页面,那是不是所有登录网站的用户在验证失败后,都会跳转到某一个用户身份验证失败的页面了。我不知道对不对。后台验证跳转页面,前台JS解析URL。