C# Owin身份验证-表单标记中的按钮重定向到登录
我想问一下Owin是如何处理表单标签中的请求的,我在表单标签中放置了一个按钮,单击它后,它会继续重定向到登录页面。下面是我继承的BaseController上的代码C# Owin身份验证-表单标记中的按钮重定向到登录,c#,asp.net,asp.net-mvc,authentication,owin,C#,Asp.net,Asp.net Mvc,Authentication,Owin,我想问一下Owin是如何处理表单标签中的请求的,我在表单标签中放置了一个按钮,单击它后,它会继续重定向到登录页面。下面是我继承的BaseController上的代码 public class BaseController : Controller { public ISessionState SessionWrapper; public BaseController(ISessionState sessionWrapper) { SessionWrapp
public class BaseController : Controller
{
public ISessionState SessionWrapper;
public BaseController(ISessionState sessionWrapper)
{
SessionWrapper = sessionWrapper;
}
public AppUser CurrentUser => new AppUser(User as ClaimsPrincipal);
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
if (requestContext.HttpContext.User != null && requestContext.HttpContext.User.Identity != null &&
requestContext.HttpContext.User.Identity.IsAuthenticated)
{
ViewData["LocationList"] = CurrentUser.LocationList;
ViewData["UserInfo"] = CurrentUser.UserInfo;
}
}
}
请参阅下面的控制器
public class HomeController : BaseController
{
private readonly IQueryProcessor _queryProcessor;
public HomeController(IQueryProcessor queryProcessor, ISessionState sessionWrapper) :
base(sessionWrapper)
{
_queryProcessor = queryProcessor;
}
public ActionResult Index()
{
var locations = CurrentUser.LocationList;
SessionWrapper.Clear();
SessionWrapper.Store("key", "some value");
return View();
}
[HttpPost]
public ActionResult Index(int a)
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page. " + SessionWrapper.Get("key");
;
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
下面是视图
@{
ViewBag.Title = "Home Page";
}
<!-- Breadcrumbs line -->
<div class="crumbs">
<ul id="breadcrumbs" class="breadcrumb">
<li>
<a href="@Url.Action("", "")" title=""><i class="icon-home"></i></a>
</li>
<li class="current">
<a href="##" title="">Today</a>
</li>
</ul>
</div>
<div class="page-title">
<h3>Welcome to HSWORX</h3>
<span>
Good morning, John!
@{
if (User.Identity.IsAuthenticated)
{
<label> Authenticatd</label>
}
else
{
<label> Un- Authenticatd</label>
}
}</span>
</div>
<div class="row">
<div class="col-md-12">
</div>
</div>
@using (Html.BeginForm())
{
<input type="submit" value="Test HTTPPOST" />
<button>Test</button>
}
@{
ViewBag.Title=“主页”;
}
-
-
欢迎来到HSWORX
早上好,约翰!
@{
if(User.Identity.IsAuthenticated)
{
认证
}
其他的
{
未经认证
}
}
@使用(Html.BeginForm())
{
试验
}
如果您被重定向到登录页面,则表单发布到的控制器和/或操作可能具有[授权]属性,该属性要求用户登录。有点不清楚你的表单和按钮实际上在做什么。Hi Mark更新了我的问题,加入了HomeController。无论是否带有authorize属性,它仍然重定向到登录页面。我已经在视图中检查了用户是否经过身份验证,并且它似乎已经过身份验证。您是否也可以在视图中包含带有表单标记和按钮的部分?Hi Mark再次更新了我的问题,尝试添加一个按钮和一个提交类型按钮,单击后这两个按钮都会重定向到登录页面。这是Views\Home\Index.cshtml的视图吗?您可以在生成的HTML中仔细检查表单标记中呈现的“action”属性吗。应该是(如果是主视图\索引视图)。