我正在尝试向ASP.NET MVC应用程序添加简单的身份验证和授权.
我只是试图在基本的表单身份验证上增加一些功能(由于简单性和自定义数据库结构)
假设这是我的数据库结构:用户:用户名密码角色(理想情况下是一些枚举.如果需要,则为字符串.目前,用户只有一个角色,但这可能会改变)
高级问题:鉴于上述数据库结构,我希望能够做到以下几点:
目前,我真正确定的是如何进行身份验证.在那之后,我迷路了.我不确定我在哪个位置获取用户角色(登录,每次授权?).由于我的角色可能不是字符串,我不确定它们如何适应User.IsInRole().
现在,我在这里问,因为我没有找到一个"简单"完成我需要的东西.我见过多个例子.
对于身份验证
对于授权,我看到:
任何帮助将不胜感激.但是,我担心我可能需要很多细节,因为我用Google搜索的内容似乎都不适合我需要做的事情.
response 302当经过身份验证的用户没有权限时,Asp.net MVC2会重定向到登录页面.
我想分成两个动作
有什么办法吗?或者我在授权和表单身份验证方面做错了什么?我能想到的唯一方法是编写自定义授权属性,我想避免使用它.
我是ASP.NET的新手,我正在尝试找到一种方法,可以轻松地将未经身份验证的用户从站点上的任何页面重定向到登录页面.如果有另一个选项,我宁愿不在每个HTTP GET函数中放入以下代码.
if (!Request.IsAuthenticated)
{
return RedirectToAction("LogOn", "Account");
}
Run Code Online (Sandbox Code Playgroud) 在RC1之前,我们做了类似这样的事情:
public void OnAuthorization(AuthorizationContext filterContext)
{
if (whatever)
{
filterContext.Cancel();
}
}
Run Code Online (Sandbox Code Playgroud)
现在已经不见了,我们如何用RC1实现相同的结果?
谢谢,
凯尔
我有以下要求来实现访问控制列表
public class SecurityObject{
public string Key{get;set;}
public string DisplayName{get;set;}
public bool isAllowed{get;set;}
}
public class Role{
List<SecurityObject> AccessibleObjects{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
目前我使用表单身份验证进行基本授权.以下是我的代码
的Global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
public override void Init()
{
this.PostAuthenticateRequest += new
EventHandler(MvcApplication_PostAuthenticateRequest);
base.Init();
}
void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie =
HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
string encTicket = authCookie.Value;
if (!String.IsNullOrEmpty(encTicket))
{
FormsAuthenticationTicket ticket =
FormsAuthentication.Decrypt(encTicket);
string[] userData = ticket.UserData.Split(new string[] { "___" },
StringSplitOptions.None);
string[] roles = null;
if (userData.Length …Run Code Online (Sandbox Code Playgroud)