Я только что настроил свое MVC-приложение с аутентификацией по формам, и все просто замечательно, за исключением моего _LogOnPartial
представления.«Welcome [Log Off]» работает нормально, однако, у меня также есть специальный текст или выпадающий список для выбора ролей, который должен отображаться в зависимости от роли пользователя.
Это работает нормально, если пользователь имеетвошел в систему во время текущего сеанса, потому что я использую куки-файлы для удержания роли и проверки с помощью User.IsInRole()
в контроллере до того, как произойдут какие-либо действия.
Это не работает, если пользователь выбирает «Запомнить меня», потому что, когда сеансзапускается, нет файла cookie, содержащего роль, и, следовательно, видимых элементов.
Есть ли простой способ проверить User.IsInRole()
в частичном представлении?
Вот мой вид:
<div id="LogInContainer">
@if (Request.IsAuthenticated)
{
<div class="InLine" id="WelcomeDisplay">
<text>Welcome <b>@Context.User.Identity.Name</b>! [ @Html.ActionLink("Log Off", "LogOff", "Account")
]
</text>
</div>
<div id="clientDropDown">
@{
var requestCookie = Request.Cookies["Role"];
if (requestCookie != null)
{
if (requestCookie.Value == "Client1")
{
HttpCookie joannCookie = new HttpCookie("Client", "Client1");
Response.Cookies.Add(Client1Cookie);
<text>Client: Client1</text>
}
else if (requestCookie.Value == "Client2")
{
HttpCookie safewayCookie = new HttpCookie("Client", "Client2");
Response.Cookies.Add(Client2Cookie);
<text>Client: Client2</text>
}
else if (requestCookie.Value == "Administrator")
{
@:Client: @Html.DropDownList("Client", new SelectList(ConfigurationHelper.Clients))
}
}
else
{
//Do nothing
}
}
</div>
}
else
{
<div id="LogOnLink">
[ @Html.ActionLink("Log On", "LogOn", "Account") ]
</div>
}
</div>
Есть ли способ сделать файлы cookie неактивными?Я новичок в файлах cookie, поэтому могу быть просто неосведомленным, но я попробовал поиск в Google безуспешно.