我沒有明白你的觀點。 但是這可能是有益的
Secure a Web API with Individual Accounts and Local Login in ASP.NET Web API 2.2
編輯1 我有三種用戶學生和教師和管理員是這種身份登錄行動
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
ApplicationUser signedUser = UserManager.FindByEmail(model.Email);
var result = await SignInManager.PasswordSignInAsync(signedUser.UserName, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.Success:
if (signedUser.UserAccessType == "Student")
{
var ObjStudent = dbContext.Students.Find(signedUser.Id);
TempData["Student"] = ObjStudent;
}
else if (signedUser.UserAccessType == "Instructor")
{
var ObjInstructor = dbContext.Instructors.Find(signedUser.Id);
TempData["Instructor"] = ObjInstructor;
}
else if (signedUser.UserAccessType == "Admin")
{
var ObjAdmin = dbContext.Users.Find(signedUser.Id);
TempData["Admin"] = ObjAdmin;
}
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
然後在佈局:
@using AdminstrationSysytem_v1.Models
@{
var Student = TempData["Student"] as Student;
var Instructor = TempData["Instructor"] as Instructors;
var Admin = TempData["Admin"] as ApplicationUser;
TempData.Keep();
}
基於用戶類型的菜單項:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="https://github.com/AlameerAshraf">About</a></li>
@if (TempData.Count != 0)
{
if (TempData.ContainsKey("Student"))
{
<li>@Html.ActionLink("Student Profile", "UserProfile", "Students", Student)</li>
<li>@Html.ActionLink("Evalute Instructors", "Evalute", "Students", Student)</li>
}
else if (TempData.ContainsKey("Instructor"))
{
<li>@Html.ActionLink("Instructor Profile", "UserProfile", "Instructors", Instructor)</li>
<li>@Html.ActionLink("Permissions", "GivePermission", "Instructors", Instructor)</li>
}
else if (TempData.ContainsKey("Admin"))
{
<li>@Html.ActionLink("Admin Profile", "UserProfile", "Instructors", Admin)</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Studnts Panel<span class="caret"></span></a>
<ul class="dropdown-menu">
<li>@Html.ActionLink("Attendance Reception For"+" "+DateTime.Now.ToString("dd/MM/yyyy"), "AttendanceReception", "Attendance")</li>
<li>@Html.ActionLink("Report of Absence" + " " + DateTime.Now.ToString("dd/MM/yyyy"), "Report", "Attendance")</li>
<li>@Html.ActionLink("Report of Attendance" + " " + DateTime.Now.ToString("dd/MM/yyyy"), "ReportOfAttendance", "Attendance")</li>
<li>@Html.ActionLink("Attendance Reprots in time", "Reportattendanceinperiod", "Attendance")</li>
<li>@Html.ActionLink("Absence Reprots in time", "Reportabsenceinperiod", "Attendance")</li>
<li>@Html.ActionLink(" Quartz library resposible for calling this action daily", "Claculatebsence", "Attendance")</li>
@*RepoertAttendanceTaskSchedular Class in Models*@
<li>@Html.ActionLink("Students", "StudentsList", "Students")</li>
<li>@Html.ActionLink("Students", "SubmitToDepartment", "Students")</li>
</ul>
</li>
}
}
</ul>
@Html.Partial("_LoginPartial")
</div>
</div>
你能不能得到休息服務的菜單項? – User3250
我不認爲RESTservice應該知道菜單項。我想根據登錄用戶的訪問權限來顯示他們。但我不確定是否應該從RESTservice查詢/存儲這些權限,或者是否有其他方式來執行此操作。 –
我有同樣的情況。我在我的數據庫中保存訪問權限和資源URL(控制器和操作名稱),並在加載主頁上由js生成菜單。 – User3250