gpt4 book ai didi

asp.net - 如何根据记录的用户 Asp.net mvc 隐藏/显示菜单项

转载 作者:行者123 更新时间:2023-12-04 00:36:30 24 4
gpt4 key购买 nike

我正在开发一个 ASP.Net MVC 4 应用程序。 _Layout 主视图包含一个菜单,我想根据您是否以用户身份登录来隐藏菜单中的一些项目,并在您以管理员身份登录时显示。

我尝试过的方法确实隐藏了客户端菜单中的链接选项卡,但是当我以管理员身份登录时,当我希望管理员查看它时,它也会隐藏相同的链接选项卡。

只是提到我没有任何角色或管理员 Controller 登录是基于用户的

在此先感谢您的帮助。

<nav>
<ul id="menu">
<li>@Html.ActionLink("Rep Home", "Index" , "Audit")</li>
<li>@Html.ActionLink("Log Out", "Login" , "Home")</li>
@if (ViewContext.HttpContext.User.IsInRole("Admin"))
{
<li><a href="http://example/reports/?report=auditDetails" target="_blank">View your report</a></li>
}
</ul>

public class AccountController : Controller
{
//
// GET: /Account/Login

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}

//
// POST: /Account/Login

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{

if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
FormsAuthentication.SetAuthCookie(model.UserName, false);
return RedirectToLocal(returnUrl);
}

// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}





<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/User/Login" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>

最佳答案

在您的布局页面中试试这个

@if(User.Identity.IsAuthenticated)
{
<li>Link to show only to logged users</li>
if(User.IsInRole("Admin"))
{
<li>Link show only to Admin </li>
}
}
else
{
links that will show to authenticated and unauthenticated users
}

在您的 Controller 中添加这些行

Public ActionResult Login(UserModel model)
{
// Check user provided credentials with database and if matches write this
FormsAuthentication.SetAuthCookie(model.id, false);
return View();
}

最后在您的 Web.config 中将这些行添加到 System.Web 中

<authentication mode="Forms">
<forms loginUrl="Path of your Login view" timeout="2880"></forms>
</authentication>

请记住,您有 2 个 Web.config 文件,您必须将这些文件添加到较低的 Web.config 文件中。

关于asp.net - 如何根据记录的用户 Asp.net mvc 隐藏/显示菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com