VS2013 ASP.. NET MVC单页应用模板自动重定向
本文关键字:重定向 应用 ASP NET MVC 单页 VS2013 | 更新日期: 2023-09-27 18:09:05
ASP中默认的SPA模板。. NET在Visual Studio 2013中为我们提供了一个默认的网站模板。但是,此模板不允许看到/Home/Index页,并自动重定向到/Account/Login。现在,我确实想使用这个不错的功能,但不是在我的主页上。
我已经试过了:
- 注释掉Authorize属性
- 逐个添加AllowAnonymous, OverrideAuthentication等。
//[Authorize]
[AllowAnonymous]
[OverrideAuthentication]
public class HomeController : Controller
{
[OverrideAuthentication]
[AllowAnonymous]
public ActionResult Index()
{
return View();
}
}
但是它仍然将我重定向到
http://example.com: 49838/账户/登录? ReturnUrl = % 2 faccount % 2 fauthorize % 3 fclient_id % 3 dweb % 26 response_type % 3 dtoken % 26州% 3 d
每当我去
http://example.com: 49838/Home/指数
我该如何预防呢?
首先,移除Home控制器的Authorize属性
//[Authorize]
public class HomeController : Controller
然后在/Views/Home/Index中。cshtml删除SPA逻辑(我已经注释掉了):
@section SPAViews {
@Html.Partial("_Home")
}
@section Scripts{
@*
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/app")
*@
}
基本上你正在做的是使主页成为一个常规的旧MVC页面,这是我猜你想要做的。
然后你可以链接到一个新页面,该页面将托管你的SPA应用程序(并要求用户登录)。
在你的控制器中:
//[Authorize]
public class HomeController : Controller
在knockout视图模型中
app.addViewModel({
name: "Home",
bindingMemberName: "home",
factory: HomeViewModel,
// add this line only if you require authorization, remove or set to false in your home view model
authorize: true
});
最后在app视图模型中:
self[options.bindingMemberName] = ko.computed(function () {
if (options.authorize && !dataModel.getAccessToken()) {
...
}
return self.Views[options.name];
});