我希望知道如何重定向用户。我有一个控制器Index(),我只想让拥有“学生”角色的用户进入其中!所以我使用
[Authorize(Roles="Student")]
我想知道如何将没有此角色的用户重定向到主页。
我希望知道如何重定向用户。我有一个控制器Index(),我只想让拥有“学生”角色的用户进入其中!所以我使用
[Authorize(Roles="Student")]
您可以通过更改web.config上的loginUrl
属性来实现此操作。将其更改为所需的路由:
<authentication mode="Forms">
<forms loginUrl="~/Home/Index" timeout="2880" />
</authentication>
MVC6中你可以尝试这样做(在Startup.cs
中):
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookieAuthenticationOptions>(options =>
{
options.LoginPath = new PathString("/Home/Index");
});
}
Microsoft.Owin
。 - fabriciorissetto有一种流传的方法适用于MVC5。 我认为它也适用于MVC6。
在您的控制器中,创建一个自定义身份验证方法,如下所示。
public class YourCustomAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
// If they are authorized, handle accordingly
if (this.AuthorizeCore(filterContext.HttpContext))
{
base.OnAuthorization(filterContext);
}
else
{
// Otherwise redirect to your specific authorized area
filterContext.Result = new RedirectResult("~/YourController/Unauthorized");
}
}
}
[YourCustomAuthorize(Roles = "Admin")]
public class UserController : Controller
{
// Omitted for brevity
}
你尝试使用会话了吗?
我猜你有一个登录页面,然后在登录后立即分类会话
然后简单的if条件就可以了。
<%If Session("userRole")="Student" Then%>
This is the text version of the page
<%Else%>
Response.Redirect("notavailablepage.html")
<%End If%>