我的ASP.Net應用程序處理角色的授權很好,但是當有人到達未經授權的頁面時,他會被踢回到登錄頁面而無需任何形式的警告。ASP.Net - 當授權失敗時如何顯示「您沒有授權」消息
有沒有辦法將消息傳遞到默認登錄頁面?或者,有沒有辦法讓授權失敗重定向到不是默認登錄頁面的頁面(同時在第一次需要授權時保持默認頁面)?
我覺得你們中的一些人誤解了我所擁有的東西。 這裏是我的login.aspx:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<script runat="server">
void Logon_Click(object sender, EventArgs e)
{
if (Membership.ValidateUser(Username.Text, Password.Text))
{
FormsAuthentication.RedirectFromLoginPage(Username.Text, false);
}
else
{
Msg.Text = "Your user name or password is incorrect";
}
}
</script>
<html>
<head id="Head1" runat="server">
<title>Login Screen</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align:center;">
<h3>You must be logged in to use this application</h3>
<table>
<tr>
<td>
User Name:</td>
<td>
<asp:TextBox ID="Username" runat="server" /></td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
ControlToValidate="Username"
Display="Dynamic"
ErrorMessage="User Name needs to be filled in"
runat="server" />
</td>
</tr>
<tr>
<td>
Password:</td>
<td>
<asp:TextBox ID="Password" TextMode="Password"
runat="server" />
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
ControlToValidate="Password"
ErrorMessage="Password needs to be filled in"
runat="server" />
</td>
</tr>
</table>
<asp:Button ID="Submit1" OnClick="Logon_Click" Text="Log On"
runat="server" />
<p>
<asp:Label ID="Msg" ForeColor="red" runat="server" />
</p>
</div>
</form>
</body>
</html>
這裏是「admin」的控制器頁:
namespace MyApp.Controllers
{
public class AdminController : Controller
{
[Authorize(Roles="SuperUser")]
public ActionResult Index()
{
return View();
}
}
}
如果誰登錄在系統中,但不具有超級用戶角色的人,它返回到登錄屏幕 - 我想要做的是,我想讓用戶區分出現的登錄屏幕,因爲用戶尚未登錄,屏幕出現,因爲用戶沒有正確的角色。
其實,我想想要做一個未經授權的用戶是顯示一個單獨的屏幕,顯示一條消息,然後讓用戶返回到應用程序的主屏幕。
您可以檢查返回URL參數的基礎上,你可能會顯示在登錄屏幕 –
消息事實證明,我所要做的是[本](http://stackoverflow.com/questions/7447705/asp-net-redirect-to-error-page-if-roles-authorization-fails)。 –