我正在尝试向ASP.NET MVC应用程序添加简单的身份验证和授权.
我只是试图在基本的表单身份验证上增加一些功能(由于简单性和自定义数据库结构)
假设这是我的数据库结构:用户:用户名密码角色(理想情况下是一些枚举.如果需要,则为字符串.目前,用户只有一个角色,但这可能会改变)
高级问题:鉴于上述数据库结构,我希望能够做到以下几点:
目前,我真正确定的是如何进行身份验证.在那之后,我迷路了.我不确定我在哪个位置获取用户角色(登录,每次授权?).由于我的角色可能不是字符串,我不确定它们如何适应User.IsInRole().
现在,我在这里问,因为我没有找到一个"简单"完成我需要的东西.我见过多个例子.
对于身份验证
对于授权,我看到:
任何帮助将不胜感激.但是,我担心我可能需要很多细节,因为我用Google搜索的内容似乎都不适合我需要做的事情.
所以我有我的行动方法
[Authorize(Roles="Admin")]
public ActionResult EditPosts(int id)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我需要授权管理员,以便他们可以编辑帖子,但(这里是很酷的部分),我还需要允许帖子的创建者能够编辑一个普通用户的帖子.那么我怎样才能过滤掉创建帖子的用户以及管理员但是未经授权的其他人?我接受PostEntry id作为路由参数,但是在atribute之后,属性只接受常量参数,看起来非常困难,你的答案非常受欢迎,干杯!
我正在尝试使用表单身份验证在ASP.NET MVC中创建自定义身份验证方案.我可能在网站上有不同区域进行管理的想法 - 审批者是和一般用户区域,这些将使用不同的登录页面,依此类推.所以这就是我想要发生的事情.
非常感谢任何帮助!
这就是我到目前为止所做的,它不起作用:
public class AdministratorAccountController : Controller
{
public ActionResult Login()
{
return View("Login");
}
[HttpPost]
public ActionResult Login(AdministratorAccountModels.LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
if (model.UserName == "admin" && model.Password == "pass") // This will be pulled from DB etc
{
var ticket = new FormsAuthenticationTicket(1, // version
model.UserName, // user name
DateTime.Now, // create time
DateTime.Now.AddSeconds(30), // expire time
false, // persistent
""); // user data
var strEncryptedTicket = FormsAuthentication.Encrypt(ticket);
var …Run Code Online (Sandbox Code Playgroud)